google-drive-cms
v1.0.1
Published
Connect to Google Drive as a backend API for content & data
Downloads
5
Readme
Google Drive CMS
This shared Google Drive folder serves as the backend for this sample webpage.
Quick links: Github / NPM / Dockerhub / Heroku
NPM
npm i google-drive-cms
Run local demo
npm i
npm start
Note: The local demo app connects to a remote backend deployed on Heroku. To run your own backend and connect to your own Google Drive, you will need to create your own API credentials by following the steps in the next section.
Connecting to Google APIs via Service account credentials
Create a new Google Cloud project
- Go to Google Cloud Platform Console
- Create a new project
Enable Google APIs for the project
- Double check that your new project is selected (dropdown in top left)
- Go to APIs and Services
- Enable Google Drive API
- Enable Google Sheets API
Generate Service Account credentials
- Go to Credentials
- "Create Credentials" > "Service account"
- Choose a name and email for the account
- Skip step 2
- Give your primary google account admin rights to manage this service account
- Select the Service account you just created
- Go to the KEYS tab
- "ADD KEY" > Create new key
- Use key type "JSON" and download the credentials
.json
file - Rename the file to
credentials.json
and move it to/secret/credentials.json
in this repo.
Node.js usage
const GoogleDriveCMS = require('google-drive-cms')
const cms = new GoogleDriveCMS();
cms.getDoc('1UC7Ah...').then(console.log);
Express server
node node_modules/google-drive-cms/express.js
Docker image
Get the image on Docker Hub.
# pull from docker hub
docker pull nathanbabcock/google-drive-cms
# or build locally:
docker build . -t nathanbabcock/google-drive-cms
# run container, passing in CLIENT_EMAIL and PRIVATE_KEY
docker run \
--name google-drive-cms \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=5 \
-e CLIENT_EMAIL=your-client-email-here@npm-drive-cms.iam.gserviceaccount.com \
-e PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n entire private keyfile here \n-----END PRIVATE KEY-----\n" \
-v cache:/usr/src/app/cache \
-p 80:80 \
-d \
nathanbabcock/google-drive-cms