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
npm install --save @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
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.
  • Select OAuth client ID and choose iOS from the Application Type list
  • Get your Bundle ID from the react-native / iOS project
  • Once you've successfully created your iOS client ID, download the .plist config and copy the REVERSED_CLIENT_ID to the URL Scheme section of your info.plist either in xcode or your IDE:
  • Rename the downloaded .plist file to GoogleService-Info.plist and save that to your /ios directory
  • Copy and paste the Client ID from the GoogleService-Info.plistinto the PortalOptions config object when instantiating your portal class