教程:注册 iOS/macOS 应用后自动登录用户

适用于绿色圆圈,带有白色复选标记符号,指示以下内容适用于外部租户。 外部租户(了解详细信息

本教程演示注册 iOS/macOS 应用后如何使用本机身份验证自动登录用户。

在本教程中,你将:

  • 注册后登录。
  • 处理错误。

先决条件

注册后登录

Sign in after sign up 是登录用户流的增强功能,该功能可在成功注册后自动登录。 SDK 让开发人员能够在注册后将用户登录,而无需提供用户名,或者通过一次性密码验证电子邮件地址。

若要在成功注册后将用户登录,请从 signIn(delegate) 中返回的新状态 SignInAfterSignUpState 中使用 onSignUpCompleted(newState) 方法:

extension ViewController: SignUpVerifyCodeDelegate {
    func onSignUpVerifyCodeError(error: MSAL.VerifyCodeError, newState: MSAL.SignUpCodeRequiredState?) {
        resultTextView.text = "Error verifying code: \(error.errorDescription ?? "no description")"
    }

    func onSignUpCompleted(newState: SignInAfterSignUpState) {
        resultTextView.text = "Signed up successfully!"
        let parameters = MSALNativeAuthSignInAfterSignUpParameters()
        newState.signIn(parameters: parameters, delegate: self)
    }
}

signIn(parameters:delegate) 接受 MSALNativeAuthSignInAfterSignUpParameters 实例和委托参数,我们必须在 SignInAfterSignUpDelegate 协议中实现所需的方法。

在最常见的场景中,我们收到对 onSignInCompleted(result) 的调用,它指示用户已登录。 结果可用于检索 access token

extension ViewController: SignInAfterSignUpDelegate {
    func onSignInAfterSignUpError(error: SignInAfterSignUpError) {
        resultTextView.text = "Error signing in after sign up"
    }

    func onSignInCompleted(result: MSAL.MSALNativeAuthUserAccountResult) {
        // User successfully signed in
        let parameters = MSALNativeAuthGetAccessTokenParameters()
        result.getAccessToken(parameters: parameters, delegate: self)
    }
}

getAccessToken(parameters:delegate) 接受 MSALNativeAuthGetAccessTokenParameters 实例和委托参数,我们必须在 CredentialsDelegate 协议中实现所需的方法。

在最常见的场景中,我们收到对 onAccessTokenRetrieveCompleted(result) 的调用,它指示用户已获取 access token

extension ViewController: CredentialsDelegate {
    func onAccessTokenRetrieveError(error: MSAL.RetrieveAccessTokenError) {
        resultTextView.text = "Error retrieving access token"
    }

    func onAccessTokenRetrieveCompleted(result: MSALNativeAuthTokenResult) {
        resultTextView.text = "Signed in. Access Token: \(result.accessToken)"
    }
}

配置自定义声明提供程序

如果要将来自外部系统的声明添加到颁发给应用的令牌中,请使用 自定义声明提供程序。 自定义声明提供程序由自定义身份验证扩展组成,它会调用外部 REST API 来从外部系统提取声明。

按照 配置自定义声明提供程序 中的步骤将外部系统中的声明添加到安全令牌中。

后续步骤