Meteor アプリケーション内で使用するために、認証された Facebook ユーザーのプロフィール写真を取得しようとしています。私は次のことを試しました
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、名前、性別のみを返します。これは私が望むもののようであり、推奨される解決策です。唯一の問題は、ユーザーの写真に関するデータが返されないことです。
他のいくつかの投稿の提案で、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 関数を再検討する必要がありますか?