gpt4 book ai didi

javascript - 在meteor中获取facebook信息

转载 作者:行者123 更新时间:2023-12-02 14:13:35 24 4
gpt4 key购买 nike

我正在使用Meteor.loginWithFacebook

用户存储为:

{
"_id" : "cnzMXwmvtF42Dfy4q",
"createdAt" : ISODate("2016-08-31T15:58:00.814Z"),
"services" : {
"facebook" : {
"accessToken" : "randomtoken",
"expiresAt" : 1477842969226,
"id" : "randomid",
"email" : "example@example.com",
"name" : "Name",
"first_name" : "Firstname",
"last_name" : "Lastname",
"link" : "https://www.facebook.com/...",
"gender" : "male",
"locale" : "en_US",
"age_range" : {
"min" : 21
}
},
"resume" : {
"loginTokens" : [
{
"when" : ISODate("2016-08-31T15:58:00.818Z"),
"hashedToken" : "randomtoken"
}
]
}
},
"profile" : {
"name" : "Firstname"
}
}

但是当我这样做时:console.log(Meteor.user().services);

它返回为未定义。

但是如果我这样做 console.log(Meteor.user().profile); 它会正确地显示名称

问题

如何在meteor中检索facebook信息?

最佳答案

默认情况下,仅将用户名、电子邮件和配置文件对象发布到客户端。您需要编写一个发布并在客户端订阅该发布以公开您需要的字段。

话虽这么说,直接发布 services.facebook 对象可能不适合您的目的。如果您使用多种身份验证方法(例如 Google 或用户名/密码),您可能希望通过将所需信息复制到不同字段来标准化您的用户文档。

以下是我处理使用 Facebook、Google 和常规旧电子邮件/密码的项目的方法:

Accounts.onCreateUser(function(options, user) {
// Copy first name and last name from user services
if (user.services.google) {
user.firstName = user.services.google.given_name;
user.lastName = user.services.google.family_name;
} else if (user.services.facebook) {
user.firstName = user.services.facebook.first_name;
user.lastName = user.services.facebook.last_name;
}

// You can use the profile object to pass in user information in a password signup form
if (options && options.profile) {
if (options.profile.firstName) {
user.firstName = options.profile.firstName;
}

if (options.profile.lastName) {
user.lastName = options.profile.lastName;
}
}

return user;
});

Note that it is NOT recommended that you use the profile object to store user data.

关于javascript - 在meteor中获取facebook信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39254437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com