皆さん、実際に 2 つの質問があります。
1.ユーザー情報を取得しようとしているのは、(Facebook API を使用して) 必要な情報のリストです: user_likes、friends_about_me、user_birthday、email、user_location、user_work_history、read_friendlists、friends_groups、user_groups
ここに私のコードがあります:
Template.user_loggedout.events({
"click #fb":function(e,tmp){
Meteor.loginWithFacebook({
requestPermissions :
['user_likes',
'friends_about_me',
'user_birthday',
'email',
'user_location',
'user_work_history',
'read_friendlists',
'friends_groups',
'user_groups']
},function (err){
if(err){
console.log("error when login with facebook " + err);
} else {
console.log("login with facebook succeeded");
}
});
},
})
しかし、私はいくつかのフィールドだけでユーザーオブジェクトを作成することになります(mongoDBのユーザーJSONオブジェクト、セキュリティのためにいくつかのフィールドに「xxx」を挿入しました):
{
"createdAt" : 1378842117154,
"_id" : "mW7urf5yZPCm6HhNK",
"services" : {
"facebook" : {
"accessToken" : "xxxx",
"expiresAt" : 1383945305007,
"id" : "xxxxxx",
"email" : "xxxx",
"name" : "Boaz",
"first_name" : "Boaz",
"last_name" : "xxx",
"link" : "https://www.facebook.com/xxxx",
"username" : "boazmier",
"gender" : "male",
"locale" : "he_IL"
},
"resume" : {
"loginTokens" : [
{
"token" : "TcLnp9GSbDasNZNCj",
"when" : 1378842117154
}
]
}
},
"profile" : {
"name" : "Boaz xxxx"
}
}
明らかに、friends_list、user_birthday などのレコードがないことがわかります。
2 番目の質問: github と同じこと - 私はこれを要求します: user, public_repo, avatar_url, gist ですが、最終的には:
{
"createdAt" : 1378843359664,
"_id" : "pJGwTepYe2Ps7hhnS",
"services" : {
"github" : {
"id" : xxxx,
"accessToken" : "xxxxx",
"email" : "xxxxx",
"username" : "boazhoch"
},
"resume" : {
"loginTokens" : [
{
"token" : "hbNLcuC85MKwBJBfb",
"when" : 1378843359664
}
]
}
},
"profile" : {
"name" : "xxxx"
}
}
そのため、アバターはなくなりますが、サーバー上のコードを次のように変更すると:
Accounts.onCreateUser(function(options,user){
var accessToken = user.services.github.accessToken,result,profile;
result = Meteor.http.get("https://api.github.com/user", {
params: {
access_token: accessToken
}
});
if(result.error){
throw result.error
}
profile = _.pick(result.data,
"login",
"name",
"avatar_url",
"url",
"company",
"blog",
"location",
"email",
"bio",
"html_url");
user.profile = profile;
return user;
});
ユーザー オブジェクトが avatar_url を取得するのはなぜですか? 私は流星がAccount.createUserで出荷され、onCreateUserを実行することでそれをオーバーライドすることを知っていますが、requestPermissionsのポープスは何ですか? また、Account.onCreateUser 関数は 1 つしか持てないので、この関数が各サービスから異なるデータを要求するようにするにはどうすればよいですか? (facebook、google、github、twitter、meetup を含めたい)