以下 FB.Login 函数在桌面 Chrome、FF 和 Safari 中运行良好。
但在移动 Safari 中(在 iPhone 4S 上测试),它挂起并且不会返回 FB.login 回调。当我使用 Safari 并将用户代理设置为“Safari iOS 4.3.3 - iPhone”时,我也可以在控制台中看到这一点。
是因为手机 Safari 屏蔽了弹出窗口吗? (FB.login 触发弹出对话框)。
我该如何解决?谢谢。
function Login(returnLink) {
FB.login(function(response) {
if(response.status === 'connected') {
console.log('User is now FB logged in.');
// now log them into my site
encodedReturnLink = encodeURIComponent(returnLink);
window.location = location.protocol + '//' + location.host + "/login?returnUrl=" + encodedReturnLink;
}
else {
console.log('User did not fully authorize after clicking FB login button.');
}
},
{scope : 'email, publish_actions, publish_stream'}
);
}
我试图奔跑FB.Login
自动在页面加载时window.fbAsyncInit
而且它在 iOS 上的 Safari 中不起作用。事实证明,Safari 阻止了 FB.Login 调用触发的弹出窗口。桌面上的 Safari 和 Chrome 运行良好(允许弹出窗口)。
我发现解决此问题的唯一方法是触发 FB.Login 调用以响应用户交互(例如点击或单击)。这对我有用:
HTML
<a href="#" id="fbLogin">Login with Facebook</a>
JavaScript (jQuery)
$('#fbLogin').click(function(){
FB.login(function(response){
// Do something...
});
});
在 Safari (iOS 8.0) 上测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)