如果用户未登录 Facebook,则 FB.getLoginStatus 不会触发

Posted

技术标签:

【中文标题】如果用户未登录 Facebook,则 FB.getLoginStatus 不会触发【英文标题】:FB.getLoginStatus doesn't fire if the user is not logged in to Facebook 【发布时间】:2011-11-06 00:24:20 【问题描述】:

我正在开发一个与 Facebook 集成的 Facebook 应用程序,并试图获取用户的 FB 会话。据我了解,一个常见的使用场景如下。

    致电FB.init() 调用 FB.getLoginStatus 给它一个适当的回调。

我运行了以下代码(应用程序 ID)。

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    <!--

    function init()
        FB.init(
            appId  : '9999999999999',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml  : true, // parse XFBML
            channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel
            oauth  : true // enable OAuth
        );
        alert('going to call FB.getLoginStatus ');

        FB.getLoginStatus(function(response) 
            alert('whoo hoo!!! getLoginStatus called the callback');
        );
    
    init();
    //-->
</script>

如果用户已经在同一个浏览器会话中登录到 Facebook,那么一切都会按预期进行 - 返回填充的 _response.authResponse_。但是,如果用户未登录 Facebook,则根本不会触发回调。检查浏览器网络日志,我看到 Facebook 返回以下响应(来自http://www.facebook.com/dialog/oauth 的请求?)。

应用程序错误:获取您请求的应用程序的数据时出现问题。该应用程序可能无效,或者可能存在临时故障。请稍后再试。

我在 Chrome 和 Firefox (Mac) 上检查过。


更新

我要感谢所有回复的人。

Ben的评论有答案。

谢谢 Ben - 你为我省去了很多挫折。

【问题讨论】:

您的应用是否处于沙盒模式?如果是这样,似乎存在可能导致此问题的错误:bugs.developers.facebook.net/show_bug.cgi?id=19359 您是使用 channelUrl 作为环回,还是仅用于示例?我不相信环回适用于该功能。 channelUrl的使用说明here。显然它应该加快加载时间并有助于避免一些问题。真的不在乎它在我开发时是否有任何作用,当我上线时应该会有所帮助。 【参考方案1】:

尝试强制加载事件:

FB.getLoginStatus(function(response) 
    alert('whoo hoo!!! getLoginStatus called the callback');
, true);

FB.getLoginStatus中有说明。

在某些情况下可能不会触发该事件。

【讨论】:

添加 true 以强制加载为我解决了无响应问题!【参考方案2】:

原因是最近的bug 仅影响沙盒模式。我关闭了沙盒模式,它就像一个魅力。

【讨论】:

我可以吻你!非常感谢。我整晚都在尝试和尝试东西......我不明白发生了什么......干得好Facebook。 6个月后,问题仍然存在......

以上是关于如果用户未登录 Facebook,则 FB.getLoginStatus 不会触发的主要内容,如果未能解决你的问题,请参考以下文章

用户登录后 Facebook 不会重定向到回调 URL

Facebook 注册-> 获取用户 fb 信息-> 使用我的应用程序进行身份验证-> 如果用户存在于数据库中,则登录,否则创建帐户

解析facebook登录问题?

解析注册推送通知 - 如果用户未登录则崩溃

Facebook 登录用户数据未显示在 Firebase 控制台中

在android中使用facebook登录[重复]