Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

管理电子邮箱/密码用户 — Kotlin SDK

在此页面上

  • 注册新用户
  • 确认新用户的电子邮件地址
  • 重试用户确认方法
  • 重新发送用户确认电子邮件
  • 重试用户确认函数
  • 重置用户密码
  • 发送密码重置电子邮件
  • 运行密码重置功能
  • 登录或注销用户

当您在Atlas App Services App 中启用电子邮件/密码提供商时,您可以通过注册和登录新用户来从客户端代码处理用户身份验证。

要注册新用户,请将用户提供的电子邮件和密码传递给app.emailPasswordAuth.registerUser():

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interactions
app.emailPasswordAuth.registerUser(email, password)
}

当您在 中启用 电子邮件/密码提供商 Atlas App Services时,您可以选择一种确认方法。Atlas App Services电子邮件/密码确认服务提供令牌和令牌ID ,您可以通过电子邮件或自定义Atlas Function向用户获取这些令牌和令牌 ID。 要确认用户,请将该令牌和 tokenId 提供给app.emailPasswordAuth.confirmUser():

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interactions
app.emailPasswordAuth.confirmUser(token, tokenId)
}

确认用户后,您可以使用电子邮件/密码凭据继续登录。

SDK 提供了各种方法,允许重新发送用户确认邮件或重试自定义确认方法。

重新发送确认电子邮件。 每个 URL 中的确认令牌会在30分钟后过期。 如果用户没有在该期限内点击链接并确认,则必须请求新的确认电子邮件。

要重新发送用户确认电子邮件,请向app.emailPasswordAuth.resendConfirmationEmail() 提供用户的电子邮件地址:

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interaction
app.emailPasswordAuth.resendConfirmationEmail(email)
}

要重试自定义用户确认函数,请向app.emailPasswordAuth.retryCustomConfirmation() 提供用户的电子邮件地址:

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interaction
app.emailPasswordAuth.retryCustomConfirmation(email)
}

重置用户密码是一个多步骤的过程。

  1. 在客户端应用程序中,您为用户提供一个用于重置密码的用户界面。 然后,您的 App Services App 可以发送电子邮件或运行自定义函数来确认用户的身份。

  2. 确认用户身份后,即可完成密码重置请求。

  3. 密码重置完成后,用户可以使用新密码登录。

有关如何设置首选密码重置方法的更多信息,请参阅Atlas App Services电子邮件/密码身份验证文档。

要发送密码重置电子邮件以确认用户身份,您必须将应用配置为发送密码重置电子邮件。

要开始密码重置过程,请调用app.emailPasswordAuth.sendResetPasswordEmail() 与用户的电子邮件。 Atlas App Services会向用户发送一封包含唯一URL的电子邮件。 用户必须在30分钟内访问此 URL 才能确认重置。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interaction
app.emailPasswordAuth.sendResetPasswordEmail(email)
}

用户访问密码重置电子邮件中的 URL 后,调用app.emailPasswordAuth.resetPassword() 包含用户的电子邮件、新密码以及唯一 URL 中提供的 tokentokenId

如果用户在 30 分钟内没有访问密码重置电子邮件中的 URL, tokentokenId则会过期。 您必须再次开始密码重置过程。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interactions
app.emailPasswordAuth.resetPassword(token, tokenId, newPassword)
}

当您将应用程序配置为运行密码重置函数时,您可以定义在调用app.emailPasswordAuth.callResetPasswordFunction()时应运行的函数 从 SDK。 此函数可以接受用户名、密码和任意数量的其他参数。 您可以使用这些参数指定用户应传递以成功完成密码重置的详细信息,例如安全问题答案或其他挑战。

如果要定义自己的密码重置流程,您可能更愿意使用自定义密码重置函数。 例如,您可以从特定域发送自定义密码重置电子邮件。 或者,您可以使用电子邮件以外的服务来确认用户的身份。

在 App Services 端,您可以定义在调用此方法时运行的自定义密码重置函数。 该函数可以返回三种可能的状态之一:

  • fail

  • pending

  • success

SDK 将fail状态视为ServiceException错误。 SDK callResetPasswordFunction()不会向客户端返回pendingsuccess状态。

如果您希望用户采取一些额外步骤来确认其身份,您的Atlas App Services密码重置函数可能会返回 pending。 但是,该返回值不会传递给 SDK 的callResetPasswordFunction() ,因此您的客户端应用程序必须实现自己的逻辑来处理pending状态。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interaction
app.emailPasswordAuth.callResetPasswordFunction(email, newPassword)
}

您的服务器端函数可能会使用自定义电子邮件提供商发送电子邮件。 或者,您也可以使用短信,通过短信确认用户的身份。

您可以在App Services密码重置函数上下文中访问权限 和 。如果您通过App Services密码重置函数传递此信息,则可以使用tokentokenId Android 中的深层链接 将这些值传递回您的应用 iOS中的通用链接 。然后,客户端应用程序可以调用resetPassword() 来完成密码重置流程。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interactions
app.emailPasswordAuth.resetPassword(token, tokenId, newPassword)
}

如果Atlas App Services密码重置函数在函数内进行了额外验证,或者如果您在尝试重置密码之前已验证用户身份,则可以将Atlas App Services函数配置为返回 success。 但是,该返回值不会传递给 SDK 的callResetPasswordFunction() ,因此您的客户端应用程序必须实现自己的逻辑来处理success状态。

调用本示例中的函数会执行整个密码重置过程。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking { // use runBlocking sparingly -- it can delay UI interaction
app.emailPasswordAuth.callResetPasswordFunction(email, newPassword, args)
}

注册用户后,用户登录是一个单独的步骤。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking {
val emailPasswordCredentials = Credentials.emailPassword(email, password)
val user = app.login(emailPasswordCredentials)
}

您可以注销经过身份验证的用户。

val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID
runBlocking {
val user = app.login(credentials)
// ... work with logged-in user ...
// Ensure all local updates are uploaded
// before logging out
user.logOut()
}

后退

创建和验证用户