Skip to content

Latest commit

 

History

History
96 lines (69 loc) · 4.5 KB

File metadata and controls

96 lines (69 loc) · 4.5 KB
title Sign in user automatically after sign-up in iOS/macOS app
description Learn how to automatically sign-in a user after sign-up in an iOS/macOS app by using native authentication.
author henrymbuguakiarie
manager pmwongera
ms.author henrymbugua
ms.service identity-platform
ms.subservice external
ms.topic tutorial
ms.date 09/02/2024
ms.custom

Tutorial: Sign in user automatically after sign-up in an iOS/macOS app

[!INCLUDE applies-to-external-only]

This tutorial demonstrates how to sign in user automatically after sign-up in an iOS/macOS app by using native authentication.

In this tutorial, you:

[!div class="checklist"]

  • Sign in after sign-up.
  • Handle errors.

Prerequisites

Sign in after sign-up

The Sign in after sign up is an enhancement functionality of the sign in user flows, which has the effect of automatically signing in after successfully signing up. The SDK provides developers the ability to sign in a user after signing up, without having to supply the username, or to verify the email address through a one-time passcode.

To sign in a user after successful sign-up use the signIn(delegate) method from the new state SignInAfterSignUpState returned in the 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)
    }
}

The signIn(parameters:delegate) accepts a MSALNativeAuthSignInAfterSignUpParameters instance and a delegate parameter and we must implement the required methods in the SignInAfterSignUpDelegate protocol.

In the most common scenario, we receive a call to onSignInCompleted(result) indicating that the user has signed in. The result can be used to retrieve the 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)
    }
}

The getAccessToken(parameters:delegate) accepts a MSALNativeAuthGetAccessTokenParameters instance and a delegate parameter and we must implement the required methods in the CredentialsDelegate protocol.

In the most common scenario, we receive a call to onAccessTokenRetrieveCompleted(result) indicating that the user obtained an 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)"
    }
}

[!INCLUDE Custom claims provider]

Next step

[!div class="nextstepaction"] Tutorial: Self-service password reset