javascript - 我如何在 Meteor 中访问用户的 Facebook 好友列表?
我刚开始接触 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 的数组会是理想的),以便我在我的 web 应用程序中使用它进行各种功能。
任何帮助都将不胜感激!
答案#1
从你的评论中我明白,你只关心 user_friends 和电子邮件。
如果你在 Userlogin 中使用 accounts-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"
}
]
}
这意味着,用户已经允许你获取他的朋友(更多信息)。
在下一步中,你查询 Graph-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
