I'm making an script to read data from google spreadsheet using the following script on nodejs:
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
approval_prompt: 'force',
scope: [
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets'
]
});
global.googleapis = { expiry_date: 0 };
google.options({ auth: oauth2Client });
var sheets = google.sheets('v4');
sheets.spreadsheets.get({ spreadsheetId: 'id'}, function(err, data) {
res.send(err, data);
});
But on every get request i'm getting this error:
Request had insufficient authentication scopes.
I checked the Google developers console to enable the Google Drive API and it's enabled, so I dont really know what could it be.
Delete the token from tokens folder and try again. If you have tried to run the Google Drive Quickstart before running the Spreadsheet Quickstart, the existing token might not have the spreadsheet access updated.
First, make sure you also enable the Sheets API in your Developers Console.
The
insufficient authentication scopes
is an error in the OAuth 2.0 token provided in the request specifies scopes that are insufficient for accessing the requested data.So make sure you use the correct and all necessary scope and check this Authorizing requests with OAuth 2.0 if you properly follow the steps here.
Lastly, try to revoke the access and try to redo it.
For more information, check this related SO question:
Write to GoogleSheet via API with Java
Google Spreadsheets API with OAuth2.0 using Javascript
In my case a token.pickle file was created in the same working directory as my program, I also had my credentials.json file in the same directory, all I did was deleted the token.pickle file , then changed the scope, then ran it again, it will again ask for authentication in your browser and that's it , it works.
My code snippet is like below , I was creating a pickle file so I had to delete it before changing scope
Firstly delete the credentials files
~/.credentials/sheets.googleapis.com-nodejs-quickstart.json
(depending on your setting)Change the scope variable used for reading cells from Google Spreadsheets from
to
The scopes look good, maybe you should try to remove the credentials stored previously in
/Users/yourUserName/.credentials/sheets.googleapis.com-projectName/*
, and then execute the application again to get new credentials.The same problem occurred when I updated the scope. Along with the instruction, I delete the token.json file under the same directory with the python script, then the Authentication scope issue went away.