Meteor Facebook 登录 (Meteor.loginWithFacebook) 问题提取 public 个人资料、电子邮件和 user_friends

Meteor Facebook login (Meteor.loginWithFacebook) issue extracting public profile, email and user_friends

正在尝试让 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 并使用有效的身份验证令牌请求它们来访问它们。代码如下:

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);
}