创建应用用户
Overview
Atlas App Services提供各种身份验证提供者来帮助用户日志您的应用。 对于大多数提供程序, App Services会在用户首次通过提供商进行身份验证时自动创建用户帐户。 唯一的例外是电子邮件/密码 用户身份验证,它要求先注册并确认用户,然后才能对用户进行身份验证。
提示
苹果帐号删除要求
Apple 要求通过 App Store 分发的应用程序 必须为任何创建帐户的用户提供删除帐户的选项。无论应用使用的是必须手动注册用户的身份验证方法(如电子邮件/密码身份验证),还是自动创建用户的身份验证方法(如“通过 Apple 登录”),通过 App Store 分发的应用都必须实现用户帐户删除功能。
身份
当您首次使用身份验证提供者程序登录, App Services会创建一个用户对象,其中包含唯一身份ID和有关用户的特定于提供程序的元数据。
链接到现有帐户
一个用户对象可以有多个身份。您可以使用 Realm SDK 将身份与现有用户帐户关联。这样,用户就可以通过多个身份提供程序登录一个帐户。有关更多信息,请参阅您首选 SDK 的身份关联文档。
创建电子邮件/密码用户
使用电子邮件/密码进行用户身份验证时,必须首先注册一个用户,这会创建用户对象。 您可以使用首选 SDK 在客户端应用程序中注册用户,也可以手动创建电子邮件/密码用户。
注册用户后,您必须先确认用户,然后才能进行身份验证。
在 SDK 中创建电子邮件/密码用户
每个 SDK 都提供一个 API,让您能够注册电子邮件/密码用户。注册用户后,您必须先确认用户,然后才能进行身份验证。有关演示如何在客户端应用程序中管理电子邮件/密码用户的代码示例,请参阅 Realm SDK 的文档:
手动创建电子邮件/密码用户
您可以从 App Services 用户界面、CLI 或 Admin API 创建新的电子邮件/密码用户。手动创建的用户会绕过任何配置的用户确认流程。
提示
在开发过程中,手动创建用户对于测试和调试应用程序很有用。
从左侧导航菜单中选择 App Users 。
单击 Add New User 按钮。
为新用户指定电子邮件解决和密码。
注意
电子邮件/密码身份验证提供程序要求密码长度为 6 到 128 个字符。
单击 Create(连接)。
注意
您还可以创建API密钥,应用程序使用该密钥连接到您的应用。 虽然API密钥不与单个用户关联,但Users标签页会列出它们。 要学习;了解有关API密钥的更多信息,请参阅API密钥身份验证。
要创建新的电子邮件/密码用户,请调用 appservices users create
并指定--type=email
。 CLI将提示您输入应用程序ID以及新用户的电子邮件和密码。
appservices users create --type=email
您还可以在调用程序时指定参数:
appservices users create --type=email \ --app=<Your App ID> \ --email=<User's Email Address> \ --password=<User's Password>
注意
电子邮件/密码身份验证提供程序要求密码长度为 6 到 128 个字符。
要创建新的电子邮件/密码用户,请按以下格式创建POST
请求。 您必须在请求正文中指定用户档案,并在请求 URL 中指定群组和应用程序 ID。
curl --request POST \ --header 'Authorization: Bearer <access_token>' \ --data '{ "email": "<string>", "password": "<string>" }' \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/users
注意
电子邮件/密码身份验证提供程序要求密码长度为 6 到 128 个字符。
确认用户
您必须先确认新电子邮件/密码用户的电子邮件解决,然后才允许他们日志App Services。 确切的确认方法取决于提供商的配置,但通常涉及 握手进程 用户和应用程序之间的 。有关电子邮件/密码用户确认的更多信息,请参阅电子邮件/密码确认。
有时,用户无法完成确认流程。例如:
过于严格的垃圾邮件过滤器可能会阻塞 App Services 电子邮件确认电子邮件。
代理或网络拦截器可能会阻止用户通过客户端应用程序激活
confirmUser
客户端SDK 功能。实现错误可能导致客户端应用程序的用户确认页面在特定使用案例下失效。
为了帮助您应对此类情况,您可以使用 App Services 用户界面或 Admin API 手动确认用户:
要在用户界面中确认待处理的电子邮件/密码用户:
从左侧导航菜单中选择 App Users。
在Users标签页下,选择PENDING按钮。
在列表中找到该用户,然后单击省略号 (
...
)。从出现的上下文菜单中选择 Confirm User 选项。
如果操作成功,App Services 管理控制台顶部的横幅应显示一条确认消息。用户的 User Status 从 Pending Confirmation 更改为 Pending User Login。
手动确认的用户会继续显示在 PENDING 用户列表中,直到他们首次登录您的应用程序,此时 App Services 将他们移至已确认用户列表中,并将其 User Status 转换为 confirmed
。
要使用 Admin API确认待处理的电子邮件/密码用户,请按以下格式创建POST
请求。 您必须指定群组ID、应用程序ID和电子邮件解决。
curl --request POST \ --header 'Authorization: Bearer <access_token>' \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/user_registrations/by_email/<email>/confirm
重新运行用户确认工作流程
有几种情况可能会导致电子邮件/密码用户确认工作流程不完整:
电子邮件被垃圾邮件过滤器捕获,由于错误而未送达,或被潜在的 App Services 用户意外删除。
自定义确认功能无法与由于错误或疏忽而未经确认的用户进行通信。
未经确认的用户在收到登录令牌后的 30 分钟内忘记访问其确认链接,并且令牌已过期。
陷入这种情况的用户似乎卡在未确认状态。由于现有帐户已注册电子邮件,因此用户无法使用相同的电子邮件地址创建新帐户。此外,用户无法登录未经确认的帐户。
使用 App Services 的内置电子邮件确认服务的应用程序可以使用 resendConfirmationEmail
客户端 SDK 方法,向用户发送一封带有新确认链接的新电子邮件,以便他们可以确认帐户并登录。调用此方法会导致使用 send a
confirmation email
之外的确认流程的任何应用程序出现错误。
没有这样的特定方法来重新运行自定义确认功能。相反,App Services 有一种方法可以触发当前电子邮件/密码用户确认工作流程的重新运行,无论该工作流程是什么。您可以使用 App Services 用户界面或 App Services Admin API 手动重新运行当前选择的用户确认流程:
要在用户界面中重新运行用户的确认工作流程:
从左侧导航菜单中选择 App Users。
在Users标签页下,选择PENDING按钮。
在列表中找到该用户,然后单击省略号 (
...
)。从出现的上下文菜单中选择 Run user confirmation 选项。
在出现的对话框中选择Run User Confirmation按钮。
如果操作成功, App Services管理控制台顶部的横幅应显示一条确认消息。 用户的User Status从Pending Confirmation更改为Pending User Login 。 用户登录后,将自动移至活动用户列表。
如果重新运行失败或用户的令牌再次过期,您可以根据需要多次重新运行确认功能。
要使用 Admin API为用户重新运行确认工作流程,请按以下格式创建POST
请求。 您必须指定群组ID、应用程序ID和电子邮件解决。
curl --request POST \ --header 'Authorization: Bearer <access_token>' \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/<groupId>/apps/<appId>/user_registrations/by_email/<email>/run_confirm
总结
对于除电子邮件/密码身份验证之外的所有提供程序,App Services 会在用户首次进行身份验证时自动创建用户对象。
您可以使用 Realm SDK 关联身份,从而使用多个提供程序登录到单一账户。
电子邮件/密码身份验证提供程序要求用户在第一次连接到应用时创建帐户。
必须通过 App Services 用户界面或 Admin API 手动确认电子邮件/密码用户。
陷入不完整电子邮件/密码确认工作流程的用户必须通过 App Services 用户界面或 Admin API 重新运行确认流程。