gpt4 book ai didi

通过外部服务的 meteor 帐户不设置 user.username

转载 作者:行者123 更新时间:2023-12-03 14:30:07 25 4
gpt4 key购买 nike

我是一个完全的新手,我一直在摆弄 Meteor 1.0 示例待办事项列表应用程序以将 google oauth 连接到它。

当我这样做时,页面不再正确呈现,因为 {{用户名}} 根本没有设置。

https://docs.meteor.com/#/full/meteor_users说“用户名:标识用户的唯一字符串。”但是 oauth 的东西不会为您创建一个。

Connect service to existing meteor account谈论将现有帐户链接到另一个服务,但在这种情况下,我只想使用外部服务。

https://stackoverflow.com/questions/25182903/meteor-facebook-registration使用 onCreateUser() 手动设置

user.username = user.services.facebook.name

但这不能跨服务移植,也不能保证唯一性。

https://github.com/aldeed/meteor-collection2定义用户架构,以便 用户名 是强制性的。

当我转储用户表(删除了一些字段)时,谷歌帐户没有用户名,并且没有字段可以真正自动采用该值,因为可能会发生冲突。可以使用电子邮件,但我宁愿用户名不是电子邮件地址。我是否只是强制用户指定所需的用户名?
meteor:PRIMARY> db.users.find()
{
"_id" : "YNWt2cATMsKFG7od6",
"createdAt" : ISODate("2014-11-05T11:08:00.406Z"),
"services" : {
"password" : {
},
},
"username" : “a_user”
}
{
"_id" : "CyQsJqcez3kWTRHyQ",
"createdAt" : ISODate("2014-11-05T12:09:40.139Z"),
"profile" : {
"name" : “Alice User”
},
"services" : {
"google" : {
"email" : “a_user@example.com",
"family_name" : “User”,
"gender" : “female",
"given_name" : "Alice”,
"id" : "1115",
"name" : “Alice User,
}
}
}

处理这个问题的正确方法是什么?

最佳答案

这就是我用 facebook 和 google 自己做的

Accounts.onCreateUser(function (options, user) {
if (options && options.profile) {
user.profile = options.profile;

}

if (user.services) {

var service = _.pairs(user.services)[0];

var serviceName = service[0];
var serviceData = service[1];

console.log("serviceName", serviceName)

if (serviceName == "facebook") {
user.emails = [
{"address": serviceData.email, "verified": true}
];
user.profile = {"first_name": serviceData.first_name, "last_name": serviceData.last_name, "avatar": getFbPicture(serviceData.id)};
}
else if (serviceName == "google") {
user.emails = [
{"address": serviceData.email, "verified": true}
];
user.profile = {"first_name": serviceData.given_name, "last_name": serviceData.family_name, "avatar": getGooglePicture(serviceData.id)};
}

}
console.log("user created :", user)
return user;
});

我不使用 username但我使用电子邮件是为了确保它是独一无二的。在那之后
我可以允许用户设置他的 usernamedisplay name像 Stackoverflow 或其他服务一样。

但是,您可以使用 邮箱 username并再次让用户稍后更改它。

关于通过外部服务的 meteor 帐户不设置 user.username,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799150/

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