我有一个难题。难题意味着我已经在网络、StackOverflow和整个FBJS SDK文档中搜索过,但都没有找到答案。
我正在构建一个页面选项卡应用程序,在其中我想让粉丝们确认参加活动。因此,我必须检查用户是否已登录,如果没有登录,则必须进行登录。听起来很容易,但是FB.getLoginStatus不会触发回调函数。以下是代码摘录:
FB.init({
appId: window.appID,
status: true,
xfbml: true,
cookie: true,
oauth: true,
channelUrl: 'http://example.com/fb/channel.html'
});
然后我简单地调用了FB.getLoginStatus,当然是在用户点击按钮之后,但它似乎没有做任何事情。我已经检查了沙盒模式、FB.init成功、应用程序设置和开发环境中的URL。我可以调用FB.ui,尽管使用方法为'oauth'的FB.ui会出现错误消息,提示“不能将'redirect_uri'参数与已弃用的'next'参数一起使用”。这非常奇怪,因为我没有使用“next”参数。但是当我将next设置为未定义时,它可以正常工作,我可以得到窗口,但它会显示“给定的URL不被应用程序配置允许”。除此之外,我可以登录,然后获得access_token。但在新窗口中,getLoginStatus仍然没有做任何事情。
所以欢迎任何建议。
谢谢, Tamas
更新:
function onBodyLoad() { //on body onload
FB.init({
appId: window.appID,
status: true,
xfbml: true,
cookie: true,
oauth: true,
channelUrl: 'http://example.com/fb/channel.html'
});
}
...
function getName() { // on button onclick
FB.getLoginStatus(function(response){
if (response.authResponse)
{
window.loggedIn = true;
debugString('Logged in');
} else
{
window.loggedIn=false;
debugString('Not logged in');
}
}, true);
if (window.loggedIn === undefined) {
debugString('getLoginStatus did not exec'); // I always get this message
}
}
更新2:我在不同的URL上创建了一个新应用程序,并将其配置为独立网站。在那里这些代码可以完美地工作,我可以获取登录状态,可以登录等。在FB的上下文中和使用FB JavaScript SDK的独立网站之间是否有任何差异?