2017-03-02 158 views
0

我们有几个Facebook应用程序已经工作了很多年。非常简单的画布应用。最近,我们决定修改一些应用程序,所以我正在尝试安装测试版本,以便我可以开始探索。FB.getLoginStatus已停止工作?

但由于某种原因,我被拒绝。在我的应用程序的启动,此Javascript运行:

(function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    // Load the Facebook SDK asynchronously 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : appId, // MY APP ID 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true, // parse social plugins on this page 
      version : 'v2.8' // set default SDK version 
     }); 

     FB.getLoginStatus(function(response) { 
      handleLoginStatusChange(response); 
     }); 
    }; 

但调用getLoginStatus一贯返回和对象有:

authResponse: undefined 
status: "undefined" 

好吧,我认为这是与流动的问题......它用于工作,但现在......

总之,应用程序做到这一点:

一)初始化Facebook的API

二)调用FB.getLoginStatus确定认证状态

C)如果返回“未授权”,我把登录屏幕

d)如果返回“连接”,我做图电话

e)如果返回“未知”,我只是打印一个错误。 (我在FB.getLoginStatus的Doc页面上使用了这个例子)。

我已经修复了“e)”,因此它在这种情况下放置了登录页面,并且进一步进入了杂草。我的登录函数调用FB.login,然后再次进入处理程序,这将获得“连接”状态。这可以调用图表来获取有关帐户页面的信息,然后在我的(PHP,顺便)应用程序中重定向到另一个页面,让用户将我的应用程序附加到他/她想要的任何页面。但是,这个重定向 - 处理访问令牌(如果需要更新),然后重新开始。初始化FB API,并调用getLoginStatus。即使我刚刚完成登录过程,它仍会返回未知状态。

???这是工作,我们有应用程序安装在近500个Facebook帐户,目前正在使用,即使在今天我看到点击。

不知道我在这里错过了什么。

+1

_“如果我不能让过去的很初始; FB登录,我宁愿沉没“_ - 你没有_implement_登录(至少不在你显示的代码中)。 – CBroe

+0

真的,对不起我的不精确的语言。直到最近,我确实实施了一些工作正常的事情。 –

回答

0

看起来你需要登录:

var permissions = 'public_profile, email, user_friends'; 
FB.login(null,{scope:permissions}); 

此外,检查登录状态之前,订阅authResponse:

FB.Event.subscribe('auth.authResponseChange', yourCallback); 
+0

再一次,我甚至无法达到那么远。我有权限,我有一个登录按钮,但有FB绘制登录按钮(至少用于)要求我加载API,然后进行“获取登录状态”调用。或者至少,这是2015年8月我写这个程序时的工作方式。 –

+0

更正 - 稍作修改,我现在通过登录,获取访问令牌,在本地保存,做一些图形调用...然后我重定向到我的应用程序中的下一页,启动相同的过程,并且getLoginStatus仍然返回“未知”,即使我刚刚通过登录过程。这确实用于工作 - 该应用程序安装在近500个Facebook页面上。 –