Comment on page
Email/SMS Authentication
One-Time Passcodes and Magic Links can be sent via email or phone. Passage highly recommends using One-Time Passcodes over Magic Links, they are easier to implement, more secure, and they provide a better user experience.
A one-time passcode(OTP) is a code that is sent to a user via email or SMS. While authenticating, a user will input the passcode to complete login or registration.
To create a new passcode for registration and send to users, call
passage.newRegisterOneTimePasscode()
with a user's email address or phone number. A successful call will return a OTP id. The id will be used when you activate the OTP.String otpId = await passage.newRegisterOneTimePasscode(identifier);
To create a new passcode for login and send to users, call
passage.newLoginOneTimePasscode()
with a user's email address or phone number. A successful call will return a OTP id. The id will be used when you activate the OTP.String otpId = await passage.newLoginOneTimePasscode(identifier);
When the user inputs their OTP into your app, you will send their OTP input string and OTP id through
passage.oneTimePasscodeActivate
, which will return an AuthResult
containing your user's tokens (which are automatically stored securely on device).AuthResult authResult = await passage.oneTimePasscodeActivate(otp, otpId);
Magic Links are hyperlinks that are sent to a user via email or SMS. Clicking the link authenticates your users and redirects them to your app.
To create a new magic link for registration and send to users, call
Passage.newRegisterMagicLink()
with a user's email address or phone number. A successful call will return a Magic Link id. The id will be used when you Activate the link and Check the Link Status.String magicLinkId = await passage.newRegisterMagicLink(identifier);
To create a new magic link for login and send to users, call
passage.newLoginMagicLink()
with a user's email address or phone number. A successful call will return a Magic Link id. The id will be used when you Activate the link and Check the Link Status.String magicLinkId = await passage.newLoginMagicLink(identifier);
When the user taps/clicks on the Magic Link url follow these steps:
- 1.Parse out the Magic Link:
Uri uri = Uri.parse(passageMagicLinkUri);
String magicLink = uri.queryParameters['psg_magic_link'];
- 2.Pass that Magic Link string to
passage.magicLinkActivate()
to validate. On success, this method will return anAuthResult
containing your user's tokens (which are automatically stored securely on device).
AuthResult authResult = await passage.magicLinkActivate(magicLink);
If the user opens the magic link on a different device or browser than where they initially requested the magic link, you can continually check the status of the link in your app. Once the Magic Link has been activated,
passage.getMagicLinkStatus
will return an AuthResult
and save the user's tokens securely on device.try {
AuthResult authResult = await passage.getMagicLinkStatus(magicLinkId);
} catch (error) {
// Magic link not activated yet, do nothing.
}
Last modified 4d ago