在meteor中如何防止社交登录创建一个帐户(如果没有)?

时间:2016-07-14 05:51:00

标签: meteor meteor-accounts

目前,默认情况下,如果我尝试在meteor中使用社交登录,则会为用户创建一个新帐户(如果没有)。但我不希望这样。这就是我需要的:

  • 当用户注册时,我需要提供社交注册选项。当用户注册社交帐户时,它应该返回应用程序,我将向用户显示一个表单以输入额外的详细信息。在填写这些详细信息之前,我不想创建帐户。我将从社交帐户中提取姓名和电子邮件。

  • 登录时,如果用户已连接社交帐户,则可以登录。否则他必须先注册。

如何在Meteor中实现此行为?

1 个答案:

答案 0 :(得分:0)

我处理此问题的方式是Account.validateNewUser

此函数验证用户并返回true或false。 但是你可以为这个过程添加逻辑。

就我而言,我通过电子邮件检查用户是否存在:

社交登录(Twitter除外)都会通过电子邮件创建用户。

该函数包含带有用户帐户信息的user对象参数 如果您使用Accounts.findUserByEmail(<email>)进行检查,则可以找到之前是否已创建用户。

在那种情况下, 有两种情况:

  • 用户尝试使用密码创建一个帐户,只返回true,其余的用户创建过程将提示用户该用户已存在此电子邮件。

  • 如果它是社交登录,我合并2个用户对象使其成为一个,保留原始_id。然后返回&#39; true&#39;通过验证过程。