3

对于使用 Facebook Javascript SDK 的移动 Web 应用程序,我们希望检查用户的登录状态,然后在必要时显示 Facebook 登录对话框。以下代码在我们的 Web 应用程序中给定按钮的单击处理程序中运行:

$('#button').click(function() {
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            // do something with the logged in and authorized user
        } else if (response.status === 'not authorized') {
            // logged in but has not authorized our app
        } else {
            // not logged in
            FB.login();
        }
    });
});

确保用户没有登录到 Facebook,这可以正常工作并在按下按钮时显示桌面网络浏览器的登录对话框,但不适用于移动网络(至少不适用于各种浏览器上的 Android,我不目前可以使用 iPhone)。移动网络应用程序上什么都没有出现,当我禁用弹出窗口阻止程序时,我会收到一个提示,询问我是否要允许这个弹出窗口,这很有效。

有谁知道为什么行为不同和/或已知/标准的解决方法是什么?谢谢!

4

1 回答 1

7

您的代码不适用于所有桌面浏览器。某些浏览器(移动和桌面)会阻止弹出窗口,除非它们是由用户单击启动的。例如,

$('#mybutton').click(function() {
   FB.login();
});

将起作用,因为该FB.login()函数在响应用户点击时被调用。因此,要修复您的代码,请将FB.login()调用替换为显示“登录”按钮和鼓励用户单击该按钮的文本的代码。

于 2012-08-01T20:02:16.930 回答