使用JavaScript SDK检索Facebook用户信息时出错

时间:2013-04-10 01:11:07

标签: facebook google-app-engine facebook-graph-api facebook-javascript-sdk

我正在尝试在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和整个网络上搜索,但没有参考。有人可以请...真的,请帮助! :)

谢谢。

1 个答案:

答案 0 :(得分:2)

经过一番调查和尝试/错误后,我发现问题是什么:) 我正在通过onclick事件调用login()函数,如下所示:

<a href='' onclick='login();'>

现在我的登录()中调用的Facebook登录对话框由于问题(功能?)而无法正常返回,直到此日为止我还不知道。我需要在onclick中将return false;添加到函数调用的末尾,以确保浏览器执行关闭打开的窗口(FB.login所依赖的,存储正确的访问密钥)的默认行为。因此,由于窗口没有正常运行,FB.api不会存储和找到正确的访问密钥,因此调用失败。长话短说,修复就像这样简单:

<a href='' onclick='login();return false;'>

希望这有助于其他人。