8

我设法编写了一个简单的小提琴,使原生 iOS facebook 应用程序崩溃。

如果您将此链接粘贴到您的时间线http://jsfiddle.net/Gc58e/(它只是一个带有照片范围的 FB.login 回调的简单按钮)并从本机 iOS 应用程序中打开它,它会在 web 视图中打开.

html

<div id="fb-root"></div>
<div class="box">
    <div class="info">Let's see if we can crash it!</div>
    <button class="login">Login with Facebook</button>
</div>

javascript

window.fbAsyncInit = function () {
    FB.init({
        appId: '467875209900414'
    });
};
(function (d) {
    var js, id = 'facebook-jssdk';
    if (d.getElementById(id)) {
        return;
    }
    js = d.createElement('script');
    js.id = id;
    js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
}(document));

$('.login').on('click', function () {
    FB.login(function (response) {
        alert('login callback' + JSON.stringify(response));
    }, {
        scope: 'user_photos'
    });
});

当您单击该按钮时,将显示身份验证窗口,并且在单击cancelok后,整个应用程序将崩溃。

如果您直接使用 Safari 或在任何其他浏览器中查看它,则不会发生这种情况。

我已经看到许多流行的应用程序在从原生 iOS Facebook 应用程序内的嵌入式 webview 进行身份验证时也会崩溃;所以这可能是一个错误,或者只是正确的做法并不明显......

这是崩溃日志

4

1 回答 1

1

它现在已被 Facebook 修复。我已经对其进行了测试,并且似乎可以正常工作。

于 2013-05-02T07:59:30.560 回答