我正在开发一个要求用户通过 Facebook 进行身份验证的响应式网站。我已经设置了 Facebook JS SDK,以及登录和登录成功回调。我的设置在台式机上运行良好,但在 iPhone 上(似乎可以在 iPad 上运行!)我遇到了一个尚未解决的问题。
当点击登录按钮时,用户会被带到一个要求用户登录的新选项卡。用户输入他/她的凭据后,选项卡会关闭,但 Safari 不会重新打开我的页面。相反,Safari 位于“选项卡选择”屏幕中,并突出显示了我的页面。用户必须通过点击选项卡明确地重新打开我的页面。点击选项卡时,它似乎并没有一致地触发authResponseChange。
请注意,如果我确保 iPhone 上的 Safari 除了我的页面之外没有打开任何选项卡,那么我会自动返回到它(正如 Safari 应用程序的设计所预期的那样),并且该站点正常运行。
<div id="fb-root"></div>
<script>
$(document).ready(function() {
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_US/all.js', function() {
FB.init({
appId : 'xxx',
xfbml : true,
status : true,
cookie : true
});
});
});
$("#login_button").bind("vclick", function() {
// Require explicit login
FB.Event.subscribe("auth.authResponseChange", function(response) {
if (response.status === "connected") {
// Perform API calls and display more of the page ...
// $.get("https://graph.facebook.com/me/friends?access_token=")
// FB.api("/me/friends", function(data) {});
}
});
FB.login(function(response) {}, {scope: 'email,friends_birthday,friends_hometown'});
});
</script>