auth-googleapis

Node.js client library for using Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT tokens is included.

Usage no npm install needed!

<script type="module">
  import authGoogleapis from 'https://cdn.skypack.dev/auth-googleapis';
</script>

README

Google Inc. logo

Auth for Google APIs Node.js Client

Node.js client library for using Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT tokens is included.

This package will help you to create OAuth2 Client for npm "googleapis" You have to define the params and credential file as below .

import {oAuth2} from 'auth-googleapis';
const authParams = {
    scopes : ['https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/photoslibrary'],
    credentialPath : './credential.json',
    tokenPath : './save-token-here.json'
  }
   const oAuth2Client =  await new oAuth2(authParams).client;

Example : credential file credential.json

//credential.json
    {
    "installed": {
        "client_id": "??????????????.apps.googleusercontent.com",
        "project_id": "my-project-????",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_secret": "?????????????????????????",
        "redirect_uris": [
            "urn:ietf:wg:oauth:2.0:oob",
            "http://localhost"
        ]
    }
}

save token file will look like:

{
  "access_token": "????????????",
  "refresh_token": "?????????????",
  "scope": "https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/photoslibrary",
  "token_type": "Bearer",
  "expiry_date": 1578389653646
}

Exmample code upload file to gdrive:

import * as fs from "fs";
import {oAuth2} from 'auth-googleapis';
const {google} = require('googleapis');

  
testUpload();
// Tests
async function testUpload() {


  const authParams = {
    scopes: [
      "https://www.googleapis.com/auth/drive",
      "https://www.googleapis.com/auth/photoslibrary"
    ],
    tokenPath: "./token/google-api.json",
    credentialPath: "./credential/google-api.json"
  };


  //Create Goolge OAuth client
  const oAuth2Client =  await new oAuth2(authParams).client;

  let params = {
    name: "test.png",
    mimeType: "image/png",
    parents: ["1PfOwDNMxfFe3SdPCMEY4E9bGs5QMbi3o"]
  };


  //Then pass to google apis
  const drive = google.drive({ version: "v3", oAuth2Client });
  //console.log('content-length : ',params.headers['content-length'])
  const fileMetadata = {
    name: params.name,
    mimeType: params.mimeType,
    parents: ["1PfOwDNMxfFe3SdPCMEY4E9bGs5QMbi3o"]
  };
  const media = {
    mimeType: params.mimeType,
    body: fs.createReadStream(params.name)
  };

  const res = await drive.files.create(
    {
      resource: fileMetadata,
      media: media,
      fields: "id"
    },
    function(err, file) {
      if (err) {
        // Handle error
        console.error(err);
      } else {
        //console.log('File Id:', file);
      }
    }
  );

  
}