No headaches. Automation wins. Get a fresh OAuth2 token ready to be used for Google APIs calls in just one command
This package was designed to simplify server-to-server tasks automation and avoid headaches when dealing with OAuth, since it the unique method to perform most of the write operations via Google APIs
It provides a simple programmatic and command-line interface which abstracts you about performing any kind of manual steps related to the authorization and handshake process to obtain a valid OAuth2 token
This uses Electron + Nightmare via nightmare-google-oauth2 plugin
Be sure you have a project and a Web Application credentials with a Client ID and Client Secret
from the Google API Console > API & Auth
> Credentials
Then you must add the following URI as allowed redirects (without final slash):
http://localhost:8488
Then you should see something like:
npm install -g google-oauth2-token
$ google-oauth2-token --help
Get Google OAuth2 token.
Usage: google-oauth2-token [options]
Options:
--help, -h Show help
--email, -e Google Account user email. Available as env variable:
GOOGLE_EMAIL
--password, -p Google Account user password. Available as env variable:
GOOGLE_PASSWORD
--client-id, -c Google API Client ID [required]
--client-secret, -x Google API Client Secret. Available as env variable:
GOOGLE_CLIENTSECRET
--scope, -s Google API permissions scope [required]
--json, -j Print tokens to stdout as JSON
Examples:
google-oauth2-token -e [email protected] -p myP@ssw0rd
--scope https://www.googleapis.com/auth/youtube.upload
--client-id xxxx ---client-secret xxxx
$ [email protected] GOOGLE_PASSWORD=p@s$w0rd google-oauth2-token \
--client-id xxxx \
--secret-client xxxx \
--scope https://www.googleapis.com/auth/youtube \
--json
The above show print something like:
{
"access_token": "H3l5321N123sdI4HLY/RF39FjrCRF39FjrCRF39FjrCRF39FjrC_RF39FjrCRF39FjrC",
"token_type": "Bearer",
"refresh_token": "1/smWJksmWJksmWJksmWJksmWJk_smWJksmWJksmWJksmWJksmWJk",
"expiry_date": 1425333671141
}
var GoogleOAuth2 = require('google-oauth2-token')
var params = {
email: '[email protected]',
password: 'sup3r_p@s$w0rd',
clientId: 'blablabla', // Google API Client ID
clientSecret: 'private', // Google API Client Secret
scope: 'https://www.googleapis.com/auth/youtube.upload'
}
GoogleOAuth2(params, function (err, tokens) {
if (err) return console.error(err)
console.log('OAuth2 access token:', tokens.access_token)
console.log('OAuth2 refresh token:', tokens.refresh_token)
console.log('OAuth2 token expiry date:', new Date(tokens.expiry_date))
})
- email
required
- Google Account user email. Example:[email protected]
- password
required
- Google Account user password. Be aware with this. Use a temporal environment variable to store it - clientId
required
- Google API Client ID. You can obtain it from the Google API Console - clientSecret
required
- Google API Client Secret ID. You can obtain it from the Google API Console - scope
required
- Scope permissions URLs separated by spaces. Read more here
MIT © Tomas Aparicio