Я пытаюсь получить изображение профиля пользователя, прошедшего аутентификацию, для использования в приложении 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
}});
});
и он возвращает только идентификатор, имя и пол. Кажется, это то, что я хочу, и рекомендуемое решение. Единственная проблема заключается в том, что в отношении изображения пользователя не возвращаются данные.
Я попытался добавить следующее к server/server.js по предложению некоторых других сообщений, но он a), похоже, не является рекомендуемым подходом, и б), похоже, ничего не делает. Таким образом, это, кажется, тупик, но кто-то там, кажется, думает, что его можно использовать, чтобы загрузить изображение профиля.
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;
};
Итак, я не уверен, в каком направлении идти в этот момент. Это что-то, что требует прав, установленных в API графиков Facebook? Или в приложении Facebook? У меня синтаксис неправильный в функции публикации? Нужно ли мне пересмотреть функцию onCreateUser?