如何使用Facebook使用JS SDK登录获取特定于应用程序的ID而不是全局ID

时间:2014-10-20 06:17:40

标签: facebook facebook-javascript-sdk facebook-login

我正在使用FB.login在我的webapp中使用Facebook登录用户。我正在使用JS SDK和v2.1:

window.fbAsyncInit = function() {
    FB.init({
    appId: 'FBAPPID',
    xfbml: true,
    version: 'v2.1',
    cookie: true,
    status: true,
    channelUrl : '/channel.html'
    });
    console.log('FB Init');
};

(function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

但是我继续在FB.login response.authResponse中获取用户全局ID,而不是应用程序特定的作用域ID。

FB.login(function(res) {
  if (res.authResponse) {
    /*
    res.authResponse contains: {
      accessToken: String,
      userID: String* (globalID, not app specific scoped ID)
      expiresIn: String,
      signedRequest: String
    }
    */
  } else {
    //User canceled or closed Login Dialog
  }
}, {
scope: 'email'
});

所以我得到了这个Facebook错误:

The global ID XXXXXXX is not allowed. Please use the application specific ID instead.

我知道使用新的Facebook版本2.1我必须使用范围ID。我想使用作用域特定的应用程序ID,但FB.login只返回全局。 如何转换或获取已记录用户的应用程序特定范围ID?

更新

我正在使用的URL端点示例:

检索用户个人资料: https://graph.facebook.com/v2.1/USERID?access_token=ACCESSTOKEN

将accessToken交换为longToken: https://graph.facebook.com/v2.1/oauth/access_token?grant_type=fb_exchange_token&client_id=FBAPPID&client_secret=FBAPPSECRET&fb_exchange_token=ACCESSTOKEN

为了吸引用户之间的共同朋友: https://graph.facebook.com/v2.1/USERID/mutalfriends/FRIENDID?access_token=ACCESSTOKEN

0 个答案:

没有答案