无法从facebook javascript登录api获取userID

时间:2012-05-22 12:45:56

标签: javascript facebook cordova facebook-javascript-sdk phonegap-plugins

我正在使用phonegap facebook插件和facebook javascript api。这是我的代码

FB.init({
    appId: "xxxxxxxxxxxxxxx",
    status: true,
    oauth :true,
    nativeInterface: CDV.FB,
    //channelURL : 'www', // Channel File
    cookie: true, 
    //useCachedDialogs: false, 
    xfbml: true
});

FB.login(function(response) {
    if (response.authResponse) {
        alert(response.authResponse.userID); // literally shows three dots
        FB.api('/me', function(me){
            if (me.id) {
                alert(me.id);  // this works
            }
        });
    }
}, { scope: "email" });

我可以从authResponse获取accessToken ....它是一个长字符串。但是userID字段实际上是“......”。我可以通过另一个图形API调用来获取/me,从服务器额外往返获取用户的ID,但这似乎很浪费。

2 个答案:

答案 0 :(得分:6)

[为了OP的利益]您可以在开始显示时通过额外调用服务器来获取客户端中的userID。这是正确的代码:

    FB.api('/me', function(me){
        if (me.id) {
            var facebook_userid = me.id;
            alert(facebook_userid);
        }
    });

这并不能解释为什么登录响应对象中的userID字段为"..."。但这是一种解决方法。

答案 1 :(得分:1)

我在github(https://github.com/davejohnson/phonegap-plugin-facebook-connect/issues/151)上发布了一个错误,因为这似乎是该插件的“功能”。不确定问题是在facebook IOS sdk中(不是从FB传回这些数据)还是在插件中(没有将这些数据传回JS级别)。