我是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数组是理想的),以便我可以在我的网络应用程序中使用它的各种功能。
任何和所有的帮助将非常感谢!
答案 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