@grabjs/superapp-sdk
    Preparing search index...

    Class ProfileModule

    SDK module for accessing user profile information via JSBridge.

    Provides access to user profile data such as email verification. This code must run on the Grab SuperApp's WebView to function correctly.

    ES Module:

    import { ProfileModule } from '@grabjs/superapp-sdk';
    const profile = new ProfileModule();

    CDN (UMD):

    <script src="https://cdn.jsdelivr.net/npm/@grabjs/superapp-sdk@x.y.z/dist/index.js"></script>
    <script>
    const profile = new SuperAppSDK.ProfileModule();
    </script>

    Hierarchy (View Summary)

    Index

    Constructors

    Methods

    Properties

    Constructors

    Methods

    • Fetches the user's email address from their Grab profile.

      Returns Promise<FetchEmailResponse>

      This method can return the following status_code values:

      • 200 (OK): Email fetched successfully. The result contains FetchEmailResult.
      • 204 (No Content): Email not available.
      • 400 (Bad Request): Invalid request parameters.
      • 403 (Forbidden): Client is not authorized to access user profile data.
      • 426 (Upgrade Required): Feature requires Grab app version 5.399 or above.
      • 500 (Internal Server Error): An unexpected error occurred.
      • 501 (Not Implemented): Requires Grab app environment.

      Android: 5.399.0, iOS: 5.399.0

      mobile.profile

      import { ProfileModule, isSuccess, isError } from '@grabjs/superapp-sdk';

      // Initialize the profile module
      const profile = new ProfileModule();

      // Fetch the user's email
      const response = await profile.fetchEmail();

      // Handle the response
      if (isSuccess(response)) {
      console.log('User email:', response.result.email);
      } else if (isError(response)) {
      switch (response.status_code) {
      case 403:
      console.log('No permission to access user profile');
      // Trigger IdentityModule.authorize() for scope 'profile email', then reload via ScopeModule.reloadScopes() and try again
      break;
      case 426:
      console.log('User needs to upgrade the app');
      // Advise user to upgrade app
      break;
      default:
      console.error(`Error ${response.status_code}: ${response.error}`);
      }
      } else {
      console.error('Unhandled response');
      }
    • Verifies the user's email address by triggering email capture bottom sheet and OTP verification.

      Parameters

      Returns Promise<VerifyEmailResponse>

      This method can return the following status_code values:

      • 200 (OK): Success, email verified and returned in result as VerifyEmailResult.
      • 204 (No Content): User closed the native bottom sheet.
      • 400 (Bad Request): Invalid request parameters.
      • 403 (Forbidden): Client is not authorized to access user profile data.
      • 426 (Upgrade Required): Feature requires Grab app version 5.399 or above.
      • 500 (Internal Server Error): An unexpected error occurred.
      • 501 (Not Implemented): Requires Grab app environment.

      Android: 5.399.0, iOS: 5.399.0

      mobile.profile

      If the user closes the verify OTP bottom sheet, the verification flow ends early. Successful verification will also update the email address for the user on Grab.

      Simple usage with email provided

      import { ProfileModule, isSuccess, isError } from '@grabjs/superapp-sdk';

      // Initialize the profile module
      const profile = new ProfileModule();

      // Verify email with pre-filled email address
      const response = await profile.verifyEmail({
      email: 'user@example.com',
      skipUserInput: true
      });

      // Handle the response
      if (isSuccess(response)) {
      if (response.status_code === 200) {
      console.log('Verified email:', response.result.email);
      } else if (response.status_code === 204) {
      console.log('User closed the bottom sheet');
      }
      } else if (isError(response)) {
      switch (response.status_code) {
      case 403:
      console.log('No permission to access user profile');
      // Trigger IdentityModule.authorize() for scope 'profile email', then reload via ScopeModule.reloadScopes() and try again
      break;
      case 426:
      console.log('User needs to upgrade the app');
      // Advise user to upgrade app
      break;
      default:
      console.error(`Error ${response.status_code}: ${response.error}`);
      }
      } else {
      console.error('Unhandled response');
      }

      Usage without parameters

      import { ProfileModule } from '@grabjs/superapp-sdk';

      const profile = new ProfileModule();

      // Let user enter email in the native bottom sheet
      const response = await profile.verifyEmail();

    Properties

    MINIMUM_VERSION: Version = ...