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

How do I access a user's Facebook friends list in Meteor?

本文关键字:Facebook 好友 列表 用户 访问 Meteor      更新时间:2023-09-26

我是流星开发的新手,我在这方面遇到了很多麻烦。我找到了以下指南,这是我找到的最接近解决方案的东西: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数组将是理想的),以便我可以将其用于Web应用程序中的各种功能。

任何和所有的帮助将不胜感激!

从您的评论中,我了解到您只关心user_friends和电子邮件。

如果您使用套餐帐户-facebook进行用户登录,则您已经拥有用户的电子邮件。要使用登录名,您必须配置服务。在启动时执行此操作的服务器端(更多信息):

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"
    }
  ]
}

这意味着,用户授予您获取其好友的权限(更多信息)。

在下一步中,您将在图形 API 中查询好友列表的详细信息:

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

这将为您提供用户的所有朋友列表。在最后一步中,您可以使用更多信息查询所有或部分列表(例如"密友"、"熟人"):

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