Portal Google Drive backup storage

The @portal-hq/gdrive-storage package contains a storage adapter intended for use with the @portal-hq/core package. This storage adapter allows end users to save backup MPC shares to their Google Drive.

Basic usage

Install the package in your React Native project.

yarn add @portal-hq/gdrive-storage

Import the package into the component where you initialize the Portal class

import Portal from '@portal-hq/core'
import GoogleStorage from '@portal-hq/google-storage'

Register your storage adapter and initialize the Portal class

const storage = new GoogleStorage({
  // Required for Android
  androidClientId: 'YOUR_ANDROID_CLIENT_ID',
  // Required for iOS
  iosClientId: 'YOUR_IOS_CLIENT_ID',
  // Optional
  folder: 'YOUR_CUSTOM_STORAGE_LOCATION',
})
const portal = new Portal({
  // ...your other config options
  backup: {
    gdrive: storage,
  },
})

Create a Google App

To enable Google Drive backups you will need to create a Google Project within your organization that will act as the OAuth consumer.
  • Create a new Google project in the Google Cloud Console
  • On the APIs & Services page click ENABLE APIS AND SERVICES
  • Search for Google Drive API, select it, and click Enable
  • Click on OAuth consent screen
    • For user type select internal.
    • Fill out the relevant information.
    Skip scopes as we configure that within our sdk.
  • Click on Credentials in the left menu and select + Create Credentials
  • Select OAuth client ID and choose Android from the Application Type list
  • Fill in the form as instructed, with Name, Package name, and SHA-1 from your Keystore.
    • Note that when testing you’ll want to use your debug.keystore at /android/app/debug.keystore; However, you’ll need to switch this value when pushing it to the store.
    • Find the Sha-1 fingerprint with this command from the root project folder: keytool -keystore ./app/debug.keystore -list -v
  • Once you have successfully created your Android Client ID , download the JSON, and rename it to begoogle-service.json
  • Move the downloaded file into the /android/app directory.
  • Now, go back to the Credentials screen from the previous step and select Web Application.
  • Input the name. Then click create and copy the value from Your Client ID
  • This value is what you will pass into the PortalOptions config when instantiating your portal class.
  • Add emails for internal testing until you’ve published your app for external use.