Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook getLoginStatus()函数和phonegap未更新状态_Facebook_Cordova_Facebook Javascript Sdk_Phonegap Plugins - Fatal编程技术网

Facebook getLoginStatus()函数和phonegap未更新状态

Facebook getLoginStatus()函数和phonegap未更新状态,facebook,cordova,facebook-javascript-sdk,phonegap-plugins,Facebook,Cordova,Facebook Javascript Sdk,Phonegap Plugins,我目前正在使用phonegap在Android上开发一个应用程序,并希望在应用程序中使用Facebook。我在Facebook上创建了一个名为“测试”的应用程序。当我没有登录“测试”,但我登录了Facebook(Android设备上的Facebook应用程序)并运行getLoginStatus()函数时,我得到的响应是unknown,而不是not\u authorized。因此,我的第一个问题是,这是有意的吗?我是想得到未知的响应,还是这是phonegap的错误,我是想得到未授权的响应 第二个问

我目前正在使用phonegap在Android上开发一个应用程序,并希望在应用程序中使用Facebook。我在Facebook上创建了一个名为“测试”的应用程序。当我没有登录“测试”,但我登录了Facebook(Android设备上的Facebook应用程序)并运行getLoginStatus()函数时,我得到的响应是
unknown
,而不是
not\u authorized
。因此,我的第一个问题是,这是有意的吗?我是想得到
未知的响应
,还是这是phonegap的错误,我是想得到
未授权的响应

第二个问题是,当我登录到名为“测试”的Facebook应用程序时,一切都正常运行(Facebook用户注册了“测试”)。当我调用getLoginStatus()函数时,它工作得非常好,并说我连接没有问题

但是

如果我进入Facebook并从我的FB帐户中删除应用程序“test”,然后再次运行android应用程序并运行getLoginStatus()函数,仍然会说我已将应用程序“test”注册到我的Facebook帐户,但事实并非如此!!注意,我在代码中确保每次都调用服务器,而不是使用JSSDK缓存的结果。现在我的第二个问题是。这是注定要发生的吗?或者,如果不是,这是Facebook或Phonegap的问题(Phonegap要么一直得到缓存的响应,要么Facebook没有足够快地更新他们的一方?)

以下是代码:

function getLoginStatus() 
      {
          FB.getLoginStatus(function(response) 
          {
            alert(JSON.stringify(response));
            alert(response.status);
            if (response.status == 'connected') 
            {
              alert('logged in');
                FB.api('/me',function (response) {
                    if (response.error)
                    {
                        alert('There is an error');
                    }
                    else
                    {
                        alert(response.name);
                    } 
                });


            }
            else 
            {
              alert('not logged in');
            }
           },true);
      }

任何回复都将不胜感激

这不是电话缺口问题
unknown
是来自
getLoginStatus
函数的有效响应之一。有关此函数的信息,请参阅。在这里,他们将
未知
响应描述为:

用户目前未登录Facebook,因此我们不知道他们是否验证了您的应用程序(未知)

至于第二个问题,您看到的问题是因为默认情况下,
getLoginStatus
函数出于性能原因缓存其响应。但是,它们为您提供了一种强制刷新状态的方法。您可以通过将第二个参数
Force
传递到
getLoginStatus
中来实现这一点

FB.getLoginStatus(function(response) {
  // this will be called when the roundtrip to Facebook has completed
}, true); // The second parameter, called 'force' by default is False. True signifies that you want to force a call to the server so you can see the latest login status.
通过查看上面的API文档链接并搜索“Force”参数,您可以阅读有关
Force
参数的更多信息


顺便说一句,我在不知道如何回答第二个问题的情况下临时删除了答案,但在找到问题背后的原因后取消了删除。

当我没有登录“测试”,但登录了Facebook(Android设备上的Facebook应用程序)并运行getLoginStatus()函数我得到一个未知而不是未授权的响应。

未授权:当用户登录facebook但尚未授权您的应用程序时,您将获得未授权。如果你把这个家伙转到facebook主页,他会输入用户名和密码并取消授权,然后你就得不到授权。如果这个家伙登录了facebook,而你的应用程序还没有将他转移到fb进行授权,那么你仍然没有获得授权

未知:如果用户未登录facebook,您将获得未知状态

因此登录,未授权:未授权 未登录:未知

如果我进入Facebook并从我的FB帐户中删除应用程序“test”


我猜这些变化需要一段时间来传播。如果用户已在当前上下文中授权应用程序,则该应用程序将保持授权一段时间(或直到他注销)。我个人不认为这有什么问题

你能给我们看一些代码吗?\@Roberto政治公众人物的回答解决了你的问题吗?目前我也对这个问题感到困惑。我总是收到回复。状态
已连接
,即使我已经从facebook应用程序注销。如果你已经解决了问题,你会怎么做?不,pep的回答根本没有解决问题。但是他得到了赏金。。。我最终并没有这么做,但我认为人们必须做的是,每当你希望发布或访问用户信息时,你都必须尝试捕捉错误并据此做出反应。因此,如果你不能发布到他们的墙上,这意味着他们删除了你的fb应用程序,因此你试图捕捉错误并提示他们再次让你的fb应用程序访问。(但我从来没有放弃过我的项目,所以我不能说这会100%奏效)。如果你明白了,请把答案贴在这里,这就是我的意思。没有把它放对。是的,op没有选择答案。默认情况下,它过期了。我已经阅读了FB上的文档,插件没有做它应该做的事情!在上面给出的代码中,即使用户登录到Facebook,但不是我在Facebook上的应用程序,我也会得到未知的响应,而不是未授权!(我从未收到未经授权的回复)。此外,如果用户从他们的facebook帐户中删除了我的应用程序,则getloginstatus()函数仍将读取“已连接”,而不是“未授权”,但facebook不允许我访问用户的朋友,如果他们已连接,我应该可以访问他们的朋友(注意,即使到Facebook服务器的往返设置为true,这也是正确的!您的答案是无用的,我引用的是文档中的内容。正如pep提到的,用户登录是缓存的,只有在用户没有登录到您的应用程序时才会被授权。一旦用户登录,响应将被连接,直到他注销。即使他从Facebook删除了应用程序(或者看起来是这样)我已经找了好几个小时的答案,
,true
成功了,谢谢!