我有一个难题。困难意味着我搜索了网络和 StackOverflow 以及整个 FBJS SDK 文档,但没有找到答案。
我正在构建一个页面选项卡应用程序,我想让粉丝参与 rsvp 活动。所以我必须检查用户是否登录,如果没有,我必须登录。这听起来很简单,但 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”参数一起使用,已弃用。”。这很奇怪,因为我没有使用“下一个”参数。但是当我在未定义旁边设置时,它工作正常,我得到窗口,但它显示“应用程序配置不允许给定 URL。”。期待,我可以登录,然后我得到了 access_token。但是在新窗口中,getLoginStatus 仍然没有做任何事情。
所以欢迎任何建议。
谢谢, 塔马斯
更新:
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 上创建了一个新的应用程序,它被配置为一个独立的网站。这些代码可以完美运行,我可以获取LoginStatus,我可以登录等。在 FB 的上下文中和在独立网站中使用 FB JavaScript SDK 有什么区别吗?
