Facebook上的FB.login工作在Safari浏览器,而不是移动Safari浏览器(Face

2019-07-29 05:40发布

下面的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'}
        );
}

Answer 1:

我试图运行FB.Login里面页面加载自动window.fbAsyncInit ,它并没有在Safari工作在iOS。 原来,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)。



Answer 2:

这绝对不是阻止弹出窗口的问题。 虽然我已经看到了其中的时候直接调用登录工作的情况下,而不是在一个AJAX回调的结果。



Answer 3:

在你的Facebook应用程序设置,仔细检查手机网站网址。



文章来源: Facebook FB.login works in Safari, but not mobile Safari