LogoLogo
SupportGithubSign InGet Access
  • Introduction
  • GETTING STARTED
    • SDK Quick Start
    • API Quick Start
  • Guides
    • Web
      • Create a wallet
      • Send tokens
      • Sign a transaction
      • Simulate a transaction
      • Back up a wallet
      • Recover a wallet
      • Cross-device sessions
      • Manage wallet lifecycle states
      • Web authentication methods
      • Perform swaps
      • Add custom signature hooks
      • MPC progress callbacks
      • Portal API methods
      • Configure a custom subdomain
      • Eject a wallet
      • Using the EIP-1193 Provider
      • Legacy documentation
        • Back up a wallet
          • Backup Options
        • Recover a wallet
    • iOS
      • Create a wallet
      • Send tokens
      • Sign a transaction
      • Simulate a transaction
      • Back up a wallet
      • Recover a wallet
      • Cross-device sessions
      • Manage wallet lifecycle states
      • Connect with WalletConnect
      • Build a WebView
      • Perform swaps
      • Add custom signature hooks
      • MPC progress callbacks
      • Portal API methods
      • Manage ERC20 tokens
      • Eject a wallet
      • Legacy documentation
        • Back up a wallet
          • Backup Options
          • Passkey + Enclave Storage
        • Recover a wallet
      • Troubleshooting Tips
      • Feature Flags
    • Android
      • Create a wallet
      • Send tokens
      • Sign a transaction
      • Simulate a transaction
      • Back up a wallet
      • Recover a wallet
      • Cross-device sessions
      • Manage wallet lifecycle states
      • Connect with WalletConnect
      • Build a WebView
      • Perform swaps
      • Add custom signature hooks
      • MPC progress callbacks
      • Portal API methods
      • Eject a wallet
      • Legacy documentation
        • Back up a wallet
          • Backup Options
        • Recover a wallet
    • React Native
      • Create a wallet
      • Send tokens
      • Sign a transaction
      • Simulate a transaction
      • Back up a wallet
      • Recover a wallet
      • Cross-device sessions
      • Manage wallet lifecycle states
      • Connect with WalletConnect
      • Build a WebView
      • Perform swaps
      • Add custom signature hooks
      • MPC progress callbacks
      • Portal API methods
      • Eject a wallet
      • Legacy documentation
        • Back up a wallet
          • Backup Options
        • Recover a wallet
    • Enclave MPC API
      • Create a client
      • Create a wallet
      • Send tokens
      • Sign Ethereum transactions
      • Sign Solana transactions
      • Sign Tron transactions
      • Sign Stellar Transaction
      • Concurrent Transactions
      • Back up a wallet
      • Eject a wallet
  • Reference
    • iOS
      • createWallet
      • backupWallet
      • recoverWallet
      • ejectPrivateKeys
      • registerBackupMethod
      • setGDriveConfiguration
      • setPasskeyConfiguration
      • setPasskeyAuthenticationAnchor
      • setPassword
      • availableRecoveryMethods
      • doesWalletExist
      • isWalletBackedUp
      • isWalletOnDevice
      • isWalletRecoverable
      • getBalances
      • getAssets
      • getNftAssets
      • getTransactions
      • sendSol
      • evaluateTransaction
      • buildEip155Transaction
      • buildSolanaTransaction
      • getWalletCapabilities
    • Android
      • Reference Documentation
    • React Native
      • @portal-hq/core
      • Storage adapters
        • Cloud storage
          • @portal-hq/gdrive-storage
          • @portal-hq/icloud-storage
        • Mobile storage
          • @portal-hq/keychain
          • @portal-hq/mobile-key-values
    • Enclave MPC API
      • V1 endpoints
    • Client API
      • V3 endpoints
      • V1 endpoints
    • Custodian API
      • V3 endpoints
      • V1 endpoints
    • Swaps API
      • V3 endpoints
      • V1 endpoints
  • Resources
    • Flutter
      • iOS
      • Android
    • Error codes
      • Overview
      • MPC errors
      • Network errors
      • General errors
      • Encryption errors
      • Portal Connect errors
    • Portal's MPC architecture
    • Authentication and API Keys
    • Self-Managed Backups
    • Alert Webhooks
    • Wallet lifecycle
    • Backup options
      • Password/PIN
      • GDrive
      • iCloud
      • Passkey + Enclave
    • WalletConnect metadata
    • Advanced security scanning
    • Account abstraction
    • Security firewall
    • Eject
    • Security
    • Blockchain support
    • Chain ID formatting
    • Testnet faucets
    • Going to Production
    • Rate Limits
    • Multi-backup migration guide
    • Multi-wallet migration guides
      • Migrating from Android SDK v3.x.x to v4.x.x
      • Migrating from iOS SDK v3.0.x to v3.2.x
  • Support
    • Changelog
      • Android
      • iOS
      • React Native
      • Web
      • Past Releases
        • 2024 Releases
        • 2023 Releases
    • Celo Hackathon Hub
    • Glossary
Powered by GitBook
On this page
  • Portal Google Drive backup storage
  • Basic usage
  • Create a Google App

Was this helpful?

  1. Reference
  2. React Native
  3. Storage adapters
  4. Cloud storage

@portal-hq/gdrive-storage

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
  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.

  • 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:

info.plist
...
	<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>REVERSE_CLIENT_ID</string>
			</array>
		</dict>
	</array>
...
  • 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

PreviousCloud storageNext@portal-hq/icloud-storage

Last updated 11 months ago

Was this helpful?

Create a new Google project

On the page click ENABLE APIS AND SERVICES

in the Google Cloud Console
APIs & Services