B2B Saas Authentication

/

Mobile SDKs

/

React Native SDK reference

/

Multi-factor Authentication

/

One-Time Passcodes

/

SMS Authenticate

SMS Authenticate

The SMS Authenticate method wraps the authenticate SMS API endpoint.

If there is a current Member Session, the SDK will call the endpoint with the session token. This will add the phone number factor to the existing Member Session. Otherwise, the SDK will use the intermediate session token. This will consume the intermediate session token and create a Member Session.

Intermediate session tokens are generated upon successful calls to primary authenticate methods in the case where MFA is required, such as email magic link authenticate, or upon successful calls to discovery authenticate methods, such as email magic link discovery authenticate.

If neither a Member Session nor an intermediate session token is present, this method will fail.

If this method succeeds, the Member will be logged in, granted an active session, and the session data will be persisted on device.

You can listen for successful login events anywhere in the codebase with the stytch.session.onChange() method or useStytchMemberSession hook.


Method parameters


organization_id*string

member_id*string

code*string

session_duration_minutes*int

set_mfa_enrollmentstring

Response fields


request_idstring

status_codeint

member_idstring

organization_idstring

session_jwtstring

session_tokenstring

member_sessionobject

memberobject

organizationobject
import React, { useCallback, useState } from 'react';
import { useStytchB2BClient } from '@stytch/react/b2b';
import { Text, TextInput, TouchableOpacity, View } from 'react-native';

export const Authenticate = () => {
  const stytch = useStytchB2BClient();
  const [code, setCode] = useState('');

  const authenticate = useCallback(
    (e) => {
      e.preventDefault();
      stytch.otps.sms.authenticate({
        member_id: 'member-test-32fc5024-9c09-4da3-bd2e-c9ce4da9375f',
        organization_id: 'organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931',
        code: code,
        session_duration_minutes: 60,
      });
    },
    [stytch, code],
  );

  const handleChange = useCallback((e) => {
    setCode(e.target.value);
  }, []);

  return (
    <View>
      <Text>Enter code</Text>
      <TextInput keyboardType="numeric" onChangeText={handleChange} autoComplete="one-time-code" />
      <TouchableOpacity onPress={authenticate}>
        <Text>Submit</Text>
      </TouchableOpacity>
    </View>
  );
};

RESPONSE

200
{
  "status_code": 200,
  "request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
  "member_id": "member-test-32fc5024-9c09-4da3-bd2e-c9ce4da9375f",
  "organization_id": "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
  "session_jwt": "example_jwt",
  "session_token": "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
  "member_session": {...},
  "member": {...},
  "organization": {...}
}