我应该在使用FB.api()时传递访问令牌吗?

时间:2013-05-19 17:42:33

标签: facebook facebook-access-token

关于如何在发出受保护事物的请求时将访问令牌传递给FB.api(),我感到有点困惑。

我正在让我的应用程序登录并进行身份验证,但如何将FB.api()与我拥有的访问令牌一起使用?

app.accessToken = response.authResponse.accessToken; // This is a valid access token.

FB.api('/me/friends?access_token='+app.accessToken, {fields: 'name,id,location,picture,installed'}, function(response) {
    console.log(response);
});

这是将访问令牌传递给FB.api()的正确方法吗?

在这种情况下,我的回复会显示朋友的姓名,身份证,位置,图片,但它似乎没有“已安装”的数据,因为它受到保护。

我这样做了吗?

4 个答案:

答案 0 :(得分:8)

虽然我知道为什么有些用户说你可能因为你的具体用途而不需要传递访问令牌。

通常,在某些情况下,您确实需要通过FB.api()

传递访问令牌

这样做的方法是将它传递给参数对象,如下所示:

FB.api('/{fb-graph-node-goes-here}/, {
  access_token: "TOKEN GOES HERE"
  //other parameters can go here aswell

}, function(response) {
  console.log(response);
});

答案 1 :(得分:4)

如果用户已登录(例如,使用FB.login),则无需传递令牌。事实上,通过使用JavaScript SDK(或PHP SDK),您几乎不需要处理(用户)访问令牌。

所以,你的电话会是这样的:

FB.api('/me/friends', function(response) {
   console.log(response);
});

获取用户安装应用程序的信息:

答案 2 :(得分:1)

我就这样做了:

  

将access_token作为参数传递。

FB.api("/me", { access_token : response.authResponse.accessToken }, {fields: ['last_name', 'first_name', 'name']},
        function (response) {
            console.log(response);
            console.log('Name: ' + response.name);
        }
      );

答案 3 :(得分:0)

如果请求扩展字段,则需要传递访问令牌。请参阅

https://developers.facebook.com/docs/facebook-login/permissions/v2.0#reference-extended-profile