我正在尝试获取经过身份验证的 Facebook 用户的个人资料图片,以便在 Meteor 应用程序中使用。我试过以下
Meteor.publish("facebook_avatar_url", function() {
return Meteor.users.find({_id: this.userId}, {fields: {
'services.facebook.id': 1,
'services.facebook.name': 1,
'services.facebook.gender': 1,
'services.facebook.picture': 1,
'services.facebook.picture.data': 1,
'services.facebook.picture.data.url': 1
}});
});
它只返回 id、name 和性别。这似乎是我想要的,也是推荐的解决方案。唯一的问题是没有返回有关用户图片的数据。
在其他一些帖子的建议下,我尝试将以下内容添加到 server/server.js,但它 a) 似乎不是推荐的方法,并且 b) 似乎没有做任何事情。所以,这似乎是一个死胡同,但似乎有人认为它可以用来加载个人资料图片。
var getFbPicture;
Accounts.loginServiceConfiguration.remove({
service: "facebook"
});
Accounts.onCreateUser(function(options, user) {
if (options.profile) {
options.profile.picture = getFbPicture(user.services.facebook.accessToken);
user.profile = options.profile;
}
return user;
});
getFbPicture = function(accessToken) {
var result;
result = Meteor.http.get("https://graph.facebook.com/me", {
params: {
access_token: accessToken,
fields: 'picture'
}
});
if (result.error) {
throw result.error;
}
return result.data.picture.data.url;
};
所以,我现在有点不确定该往哪个方向走。这是需要在 Facebook Graph API 上设置权限的东西吗?还是在 Facebook 应用程序上?我在发布功能中有语法错误吗?我需要重新访问 onCreateUser 函数吗?