Session Token and Wallet Signing

Fetch Session Token and Auth with Wallet

Fetching a Session

In order to start the authentication process with Ratio you must provide the library with a function that will call Ratio's API.

fetchSessionToken

An async function that calls your backend to return the session token from the /v1/clients/session API.

The Ratio API uses client authentication which requires a client_id and client_secret. This client secret should be treated securely and should be protected within your backend.

const fetchSessionToken = async () => {
  try {
    let sessionTokenResponse = await fetch(
      'https://your.api.com/clients/session',
      {
        method: 'POST',
        body: JSON.stringify({
          signingAddress: walletAddress,
          depositAddress: walletAddress,
          signingNetwork: walletNetwork,
        }),
      }
    );

    let data = await sessionTokenResponse.json();
    return data.id;
  } catch (e) {
    console.error(e);
  }
  return null;
};
  
<RatioComponent 
  fetchSessionToken={async () => {
            return await fetchSessionToken();
          }}/>

Wallet Signing

Ratio uses wallet authentication in order to link your client wallet to a Ratio user's account. To set up this authentication method you must provide the Ratio React Native Library with a signingCallback.

The signing callback is an async function that accepts a string that contains the challenge that is returned from the Ratio /v1/auth/cryptoWallet:start call (documentation). This will allow you to perform asynchronous activities, such as a biometrics check, during the signing.

The return value from this function is of type RatioKitSigningResult. See the Models section.

For example, using the Web3.js library

<RatioComponent 
  signingCallback={async (challenge: string) => {
    let sign = web3.eth.accounts.sign(challenge, privateKey);

    return Promise.resolve({
      signature: sign.signature,
    });
  }}/>

Sequence diagram

Last updated