我有一个带Blaze和Flowrouter的Meteor 1.3应用程序。我正在使用useraccounts:core,以及一些相关的包。我已经阅读了guide。我可以使用Facebook / Google / Instagram / Twitter登录。我不启用了帐户密码,因为我想强制用户使用社交媒体登录。
我想要做的是按照指南添加一些注册字段:
AccountsTemplates.addField({
_id: "fruit",
type: "radio",
displayName: "Preferred Fruit",
select: [
{
text: "Apple",
value: "aa",
}, {
text: "Banana",
value: "bb",
}, {
text: "Carrot",
value: "cc",
},
],
});
我注意到了:
我想要的是以下内容:
我有什么东西可以找到可用的东西吗?如果没有,其他人如何在不废弃使用这些包并从头开始构建的情况下完成我想做的事情?
答案 0 :(得分:0)
所以这就是我所做的......
我提供并添加了帐户密码以获得注册功能,但禁用使用用户名/密码登录并禁用使用社交媒体注册。我的下一步是在注册和登录后立即强制他们链接到社交媒体帐户。
在服务器上,我使用Accounts.validateNewUser()失败,除非有密码。这允许通过帐户密码注册,但不允许OAuth注册。在客户端注册屏幕上,我使用jQuery删除atForm中显示社交注册的DOM节点。
同样在服务器上,如果attemptInfo.allowed为false,我使用Accounts.validateLoginAttempt()失败。这捕获了有人第一次使用社交媒体登录(即附加到没有现有帐户)的情况。在客户端上,使用jQuery,我删除atForm中的DOM节点,在登录页面上显示accounts-ui登录。
它有点难看,但它大部分都有效。我想禁止在Accounts.validateLoginAttempt()中登录用户名/密码,但是在Accounts.validateNewUser()之后立即调用,我需要用户登录,以便我可以强制他们链接社交媒体帐户。即他们可以在下次登录。如果我能找到一种方法来区分与注册相关的登录和以后的登录,我会这样做。我愿意接受改进建议!