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({
androidClientId: 'YOUR_ANDROID_CLIENT_ID',
iosClientId: 'YOUR_IOS_CLIENT_ID',
folder: 'YOUR_CUSTOM_STORAGE_LOCATION',
})
const portal = new Portal({
backup: {
gdrive: storage,
},
})
Dependency linking
Because this package uses the @react-native-google-signin/google-signin
and @robinbobin/react-native-google-drive-api-wrapper
packages (which contain native modules) there is some additional linking required to make it work with your React Native project.
Explicitly install the @react-native-google-signin/google-signin
and @robinbobin/react-native-google-drive-api-wrapper
packages in your project.
yarn add @react-native-google-signin/google-signin @robinbobin/react-native-google-drive-api-wrapper
npm install --save @react-native-google-signin/google-signin @robinbobin/react-native-google-drive-api-wrapper
Setting up Google Drive Backups
For iOS
-
Create a new project here
-
Go here click ENABLE APIS AND SERVICES
.
-
Find Google Drive
and Enable it.
-
Click on Create Credentials
and select Google Drive API
and User Data
for the type of data we are accessing.
-
Set up the OAuth Consent screen and add emails for testing
-
Click on Credentials
on the left navigation bar and then CREATE CREDENTIALS
-> OAuth Client ID
-
For Application Type
select iOS and enter the applications names.
-
Get your Bundle ID from the react-native / iOS project.
-
Download your .plist and copy your REVERSED_CLIENT_ID
to the URL Scheme section of your info.plist in xcode.
-
Rename the downloaded plist file to GoogleService-Info.plist
and save to your /ios/
directory.
-
Save your clientId for usage in the PortalStorageProvider
-
Add the below to your 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>
For Android
To get Android working, you'll need to create 2 (two) OAuth Client IDs. One will be of type Android
and the other of type Web
-
Create a new project here
-
Go here click ENABLE APIS AND SERVICES
.
-
Find Google Drive
and Enable it.
-
To get started, go to Credentials
and click Create Credentials
-
Select OAuth Client ID
-
Select Android
from the 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 later on you'll need to switch this value when pushing it to the store. (See https://stackoverflow.com/questions/41194413/google-sign-in-for-android-release-vs-debug)
-
After successfully creating your Android
OAuth Client ID, download the JSON:
This will create a google-service.json
file on your local machine.
-
Move the google-service.json
file into the /android/app
directory.
-
Go back to the Credentials
screen and repeat step 2.
-
This time select Web Application
:
- All that you will need to input here is the
Name
. Then after you click Create
, copy the value from Your Client ID
.
- Paste this into where you implement
<PortalStorageProvider />
like so:
- Now run a clean build / install, and you should be able to log into Google!
Once this is done, you can continue to develop your project like normal