我正在尝试在Google App Engine上托管的网络应用中检索Facebook用户信息。
设置为:1。从Google默认的appspot.com托管的网络应用程序。 2.注册Facebook应用程序,并配置为“使用Facebook登录网站”。
我正在使用FB JavaScript SDK通过以下简单代码验证和检索数据:
function login(){
FB.getLoginStatus(function(r) {
if(r.status === 'connected') {
FB.api('/me', function(user) {
alert(JSON.stringify(user));
});
}else{
FB.login(function(response) {
if(response.authResponse) {
alert("Now.... Thats better with FB!");
} else {
alert("You should connect to FB.");
}
});
}
});
};
但是当我从FB.api(...)调用中得到'user'响应时,它的JSON如下:
{"error":{"type":"http", "message":"unknown error"}}
在我的Facebook应用程序中,Facebook App Settings的“Facebook登录网站”部分中的“网站URL”指向我的GAE应用程序的https地址。而且我不确定为什么会出现这样的错误。
我花了很多时间在StackOverflow和整个网络上搜索,但没有参考。有人可以请...真的,请帮助! :)
谢谢。
答案 0 :(得分:2)
经过一番调查和尝试/错误后,我发现问题是什么:)
我正在通过onclick事件调用login()
函数,如下所示:
<a href='' onclick='login();'>
现在我的登录()中调用的Facebook登录对话框由于问题(功能?)而无法正常返回,直到此日为止我还不知道。我需要在onclick中将return false;
添加到函数调用的末尾,以确保浏览器执行关闭打开的窗口(FB.login所依赖的,存储正确的访问密钥)的默认行为。因此,由于窗口没有正常运行,FB.api不会存储和找到正确的访问密钥,因此调用失败。长话短说,修复就像这样简单:
<a href='' onclick='login();return false;'>
希望这有助于其他人。