如何在Meteor中访问用户的Facebook好友列表?

时间:2015-01-20 16:23:43

标签: javascript facebook facebook-graph-api meteor

我是Meteor开发的新手,我遇到了很多麻烦。我找到了以下指南,这是我在解决方案中找到的最接近的内容:http://www.andrehonsberg.com/article/facebook-graph-api-meteor-js

此处的.getFriends()函数看起来很有希望,但我对此没有经验:https://github.com/maxkferg/meteor-facebook-collections/

我在client / config / config.js中实现了以下代码:

Accounts.ui.config({
    requestPermissions: {
        facebook: ['email', 'user_friends', 'user_location', 'user_events', 
        'friends_events', 'friends_location', 'friends_about_me',
        'user_status', 'friends_status', 'read_friendlists'],
    }
});

这在登录时正确生成了权限请求。 (但确实有问题。我收到以下错误:“未捕获错误:Accounts.ui.config:无法为facebook多次设置requestPermissions”,这很奇怪,因为它指向到隐藏的accounts_ui.js文件,我无法访问。我不应该能够覆盖这个吗?上面的指南没有提到这个错误。)

我也实现了指南代码的其余部分,但似乎没有任何工作。此外,该指南似乎在屏幕上实现了一个按钮,该按钮使得用户数据的某些方面在列表中显示(朋友,帖子等)。不过,我不想要任何形式的展示;我只是希望能够访问数据(特定用户的朋友的Facebook特定ID数组是理想的),以便我可以在我的网络应用程序中使用它的各种功能。

任何和所有的帮助将非常感谢!

1 个答案:

答案 0 :(得分:7)

根据您的评论我明白,您只关心user_friends和电子邮件。

如果您对Userlogin使用包accounts-facebook,则您已拥有该用户的电子邮件。要使用登录,您必须配置该服务。您在启动时执行此服务器端(more info):

ServiceConfiguration.configurations.upsert({
        {service: "facebook"},
        { $set: {
          appId: "XXX",
          secret: "XXX",
          requestPermissions: ['user_friends'] //here you are requesting the permission to get the user's friends
        }
    });

下一步是获取用户的朋友。 您可以使用包来执行此操作,也可以手动执行: 首先,如果用户允许,您应该检查。 向Facebook-API(API)发送请求:

GET /{user-id}/permissions

希望你能得到一个形式的对象:

{
  "data": [
    ...,
    {
      "permission": "user_friends",
      "status": "granted"
    }
  ]
}

这意味着,用户允许您获取他的朋友(more info)。

在下一步中,您将查询友情列表more info的Graph-API:

GET /v2.3/{user-id}/friendlists HTTP/1.1
Host: graph.facebook.com

这将为您提供该用户的所有好友列表。在最后一步中,您可以使用more info查询所有或部分列表(例如“关闭朋友”,“熟人”):

GET /v2.3/{friendlist-id} HTTP/1.1
Host: graph.facebook.com