目前,默认情况下,如果我尝试在meteor中使用社交登录,则会为用户创建一个新帐户(如果没有)。但我不希望这样。这就是我需要的:
当用户注册时,我需要提供社交注册选项。当用户注册社交帐户时,它应该返回应用程序,我将向用户显示一个表单以输入额外的详细信息。在填写这些详细信息之前,我不想创建帐户。我将从社交帐户中提取姓名和电子邮件。
登录时,如果用户已连接社交帐户,则可以登录。否则他必须先注册。
如何在Meteor中实现此行为?
答案 0 :(得分:0)
我处理此问题的方式是Account.validateNewUser
此函数验证用户并返回true或false。 但是你可以为这个过程添加逻辑。
就我而言,我通过电子邮件检查用户是否存在:
社交登录(Twitter除外)都会通过电子邮件创建用户。
该函数包含带有用户帐户信息的user
对象参数
如果您使用Accounts.findUserByEmail(<email>)
进行检查,则可以找到之前是否已创建用户。
在那种情况下, 有两种情况:
用户尝试使用密码创建一个帐户,只返回true,其余的用户创建过程将提示用户该用户已存在此电子邮件。
如果它是社交登录,我合并2个用户对象使其成为一个,保留原始_id
。然后返回&#39; true&#39;通过验证过程。