JMa*_*Man 10 javascript facebook mobile-safari facebook-javascript-sdk
以下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'}
);
}
Run Code Online (Sandbox Code Playgroud)
我试图FB.Login在内部页面加载时自动运行,window.fbAsyncInit并且它在iOS上的Safari中无效.事实证明Safari阻止了FB.Login调用触发的弹出窗口.桌面上的Safari和Chrome工作正常(允许弹出窗口).
我发现解决这个问题的唯一方法是触发FB.Login调用以响应用户交互(例如Tap或Click).这对我有用:
HTML
<a href="#" id="fbLogin">Login with Facebook</a>
Run Code Online (Sandbox Code Playgroud)
JavaScript(jQuery)
$('#fbLogin').click(function(){
FB.login(function(response){
// Do something...
});
});
Run Code Online (Sandbox Code Playgroud)
在Safari(iOS 8.0)上测试.
| 归档时间: |
|
| 查看次数: |
5555 次 |
| 最近记录: |