Google spreadsheet api Request had insufficient authentication scopes

前端 未结 9 1618
既然无缘
既然无缘 2020-11-29 07:45

I\'m making an script to read data from google spreadsheet using the following script on nodejs:

var url = oauth2Client.generateAuthUrl({
    access_type:            


        
相关标签:
9条回答
  • 2020-11-29 08:21

    I was looking for the credential location for long time. Lot of forum mentioned that it'd be under c:\users\.credentials\google-api****.json But I couldn't find them anywhere. Then I figured out that my program created a token.pickle file right in the program .py directory which is essentially the credential file.

    0 讨论(0)
  • 2020-11-29 08:22

    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

        if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
        # If there are no (valid) credentials available, let the user log in.
        if not creds or not creds.valid:
            if creds and creds.expired and creds.refresh_token:
                creds.refresh(Request())
            else:
                flow = InstalledAppFlow.from_client_secrets_file(
                    'credentials.json', SCOPES)
                creds = flow.run_local_server()
            # Save the credentials for the next run
            with open('token.pickle', 'wb') as token:
                pickle.dump(creds, token)
    
    0 讨论(0)
  • 2020-11-29 08:24

    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

    0 讨论(0)
  • 2020-11-29 08:31

    Also please check the installed version of googleapis in your workspace, because the latest version (51) does not support for Node 8. So you need downgrade its version. https://github.com/googleapis/google-api-nodejs-client/releases

    0 讨论(0)
  • 2020-11-29 08:32
    1. Firstly delete the credentials files ~/.credentials/sheets.googleapis.com-nodejs-quickstart.json (depending on your setting)

    2. Change the scope variable used for reading cells from Google Spreadsheets from

    var SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly'];

    to

    var SCOPES = ['https://www.googleapis.com/auth/spreadsheets'];

    1. After the execution of code, API will authenticate again and then the issue will be resolved.
    0 讨论(0)
  • 2020-11-29 08:33

    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.

    0 讨论(0)
提交回复
热议问题