尝试让 Meteor Facebook 登录正常工作。它功能齐全,因为它使用 Facebook API 并向用户帐户请求正确的权限,然后成功登录。
问题是,即使已获得批准,它也不会保存请求的权限信息,并且 Meteor.user().services.facebook 中仅提供基本名称和 ID。此代码是否不起作用,因为它没有在登录时保存用户详细信息?我找不到详细说明如何保存或提取其他数据的资源。
只需尝试控制台记录数据即可看到它已在登录时从 Facebook 用户帐户中提取出来。
在 Meteor.isClient 代码中:
Template.login.events({
'click #facebook-login': function(event) {
Meteor.loginWithFacebook({ requestPermissions: ['email', 'public_profile', 'user_friends', 'user_likes']}, function(err){
if (err) {
throw new Meteor.Error("Facebook login failed");
}
console.log(Meteor.user().services.facebook.name);
console.log(Meteor.user().services.facebook.id);
console.log(Meteor.user().services.facebook.email);
console.log(Meteor.user().services.facebook.gender);
});
},
'click #logout': function(event) {
Meteor.logout(function(err){
if (err) {
throw new Meteor.Error("Logout failed");
}
});
}
配置代码:
ServiceConfiguration.configurations.remove({
service: 'facebook'
});
ServiceConfiguration.configurations.insert({
service: 'facebook',
appId: 'correctAppID',
secret: 'CorrectSecret'
});
最佳答案
对于 Facebook v2.4 API,在您请求某些权限后,您可以通过进行图形 API 调用并使用有效的身份验证 token 请求它们来访问它们。代码如下:
if (user.hasOwnProperty('services') && user.services.hasOwnProperty('facebook') ) {
var result = Meteor.http.get('https://graph.facebook.com/v2.4/' + user.services.facebook.id + '?access_token=' + user.services.facebook.accessToken + '&fields=first_name, last_name, birthday, email, gender, location, link, friends');
console.log(result.data.first_name);
console.log(result.data.last_name);
console.log(result.data.birthday);
console.log(result.data.email);
console.log(result.data.gender);
console.log(result.data.location);
console.log(result.data.link);
console.log(result.data.friends);
}
关于facebook - Meteor Facebook 登录 (Meteor.loginWithFacebook) 提取公共(public)个人资料、电子邮件和 user_friends 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615540/