適用於:
外部租用戶 (深入瞭解)
本教學課程示範如何在使用原生驗證註冊 iOS/macOS 應用程式之後自動登入使用者。
在本教學課程中,您會:
- 註冊完成後,再進行登入。
- 處理錯誤。
先決條件
- 如果您使用的是 iOS,請依照範例 iOS(Swift)行動應用程式中登入使用者的 步驟,使用原生驗證進行操作。 如果您使用 macOS,請按照 使用原生驗證登入 macOS(Swift)應用程式的使用者中的步驟。 這些文章說明如何使用租用戶設定來執行您設定的範例應用程式。
- 教學指南:透過內建身份驗證在 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 從外部系統擷取宣告。
請遵循 設定自定義宣告提供者 中的步驟,將外部系統的宣告新增至安全性令牌。