我设法编写了一个简单的小提琴,使原生 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'
});
});
当您单击该按钮时,将显示身份验证窗口,并且在单击cancel或ok后,整个应用程序将崩溃。
如果您直接使用 Safari 或在任何其他浏览器中查看它,则不会发生这种情况。
我已经看到许多流行的应用程序在从原生 iOS Facebook 应用程序内的嵌入式 webview 进行身份验证时也会崩溃;所以这可能是一个错误,或者只是正确的做法并不明显......