facebook - Meteor Facebook 登录 (Meteor.loginWithFacebook) 提取公共(public)个人资料、电子邮件和 user_friends 时出现问题

标签 facebook facebook-graph-api meteor meteor-accounts

尝试让 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/

相关文章:

javascript - Meteor:访问数组元素中的javascript对象元素

javascript - facebook 未在 iframe 内加载

php - 喜欢 Facebook graph api 上的帖子

iphone - 使用 iOS6 链接到 Facebook 页面

java - Java 的 Facebook Messenger bot 对象结构

java - 在 Android 应用程序中使用 facebook 登录

javascript - 发布一个集合以及与第一个集合中的任何文档相关的其他集合的文档

Meteor:是否有一个响应式每个模板范围?

facebook - 我可以向 Facebook 测试用户添加个人资料数据吗?

javascript - 使用 javascript api 显示来自 facebook 的照片?