我们有几个Facebook应用程序已经工作了很多年。非常简单的画布应用。最近,我们决定要进行一些应用程序更改,因此我尝试安装测试版本,以便我可以开始探索。
但出于某种原因,我被拒绝了。在我的应用程序启动时,此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"
好吧,我认为这是一个流程问题...它曾经有用,但现在......
无论如何,该应用程序执行此操作:
a)初始化facebook API
b)调用FB.getLoginStatus来确定身份验证状态
c)如果该返回"未经授权",我会设置登录屏幕
d)如果返回"已连接",我正在进行图形调用
e)如果返回" unknown",我只是打印错误。 (我在FB页面上使用了FB.getLoginStatus的例子。)
我已修复" e)"这样它就会在那种情况下提出登录页面,并进一步深入到杂草中。我的登录函数调用FB.login,然后再次进入处理程序,这将获得" connected"状态。这会进行图形调用以获取有关帐户页面的信息,然后重定向到我的(PHP,顺便说一下)应用程序中的另一个页面,让用户将我的应用程序附加到他/她想要的任何页面。但是,这个重定向 - 处理访问令牌(必要时更新),然后重新开始。初始化FB API,并调用getLoginStatus。即使我刚刚完成了登录程序,也会再次返回未知状态。
???这是有效的,我们已经在近500个Facebook帐户上安装了应用程序,并且目前正在使用,我甚至在今天看到了点击。
不确定我在这里失踪了什么。
答案 0 :(得分:0)
您似乎需要登录:
var permissions = 'public_profile, email, user_friends';
FB.login(null,{scope:permissions});
此外,在检查登录状态之前,请订阅authResponse:
FB.Event.subscribe('auth.authResponseChange', yourCallback);