webentwicklung-frage-antwort-db.com.de

Google-Tabellenkalkulations-API-Anfrage hatte nicht ausreichende Authentifizierungsbereiche

Ich mache ein Skript zum Lesen von Daten aus der Google-Tabelle mit dem folgenden Skript auf 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);
});

Aber bei jeder Get-Anfrage bekomme ich diesen Fehler:

Request had insufficient authentication scopes.

Ich habe die Google-Entwicklerkonsole nach der Google Drive-API gesucht und aktiviert, sodass ich nicht wirklich weiß, was es ist.

15
jtomasrl
  1. Löschen Sie zunächst die Berechtigungsnachweisdateien ~/.credentials/sheets.googleapis.com-nodejs-quickstart.json (abhängig von Ihrer Einstellung)

  2. Ändern Sie die Bereichsvariable, die zum Lesen von Zellen aus Google Spreadsheets verwendet wird

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

zu

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

  1. Nach der Ausführung des Codes wird sich die API erneut authentifizieren und das Problem wird behoben.
22
Long Nguyen

Die Bereiche sehen gut aus. Vielleicht sollten Sie versuchen, die zuvor in /Users/yourUserName/.credentials/sheets.googleapis.com-projectName/* gespeicherten Berechtigungsnachweise zu entfernen und anschließend die Anwendung erneut auszuführen, um neue Berechtigungsnachweise zu erhalten.

18
Ken H

Stellen Sie zunächst sicher, dass Sie in Ihrer Entwicklerkonsole auch Aktivieren der Sheets-API.

Der insufficient authentication scopes ist ein Fehler im OAuth 2.0-Token, das in der Anforderung angegeben ist, und gibt scope an, die für den Zugriff auf die angeforderten Daten nicht ausreichen.

Stellen Sie daher sicher, dass Sie den richtigen und den erforderlichen Umfang verwenden, und prüfen Sie dies Autorisieren von Anforderungen mit OAuth 2.0 , wenn Sie die hier beschriebenen Schritte ordnungsgemäß ausführen.

Versuchen Sie schließlich, den Zugriff zu widerrufen und zu wiederholen.

Weitere Informationen finden Sie in dieser verwandten SO - Frage:

4
KENdi

Löschen Sie das Token aus dem Token-Ordner und versuchen Sie es erneut. Wenn Sie versucht haben, den Google Drive-Schnellstart auszuführen, bevor Sie den Tabellenkalkulations-Schnellstart ausgeführt haben, wird der Tabellenkalkulationszugriff für das vorhandene Token möglicherweise nicht aktualisiert.

0
Hasan Sawan

Das gleiche Problem trat bei der Aktualisierung des Bereichs auf. Zusammen mit der Anweisung lösche ich die Datei token.json im selben Verzeichnis mit dem Python-Skript. Anschließend wurde das Problem mit dem Authentifizierungsbereich behoben.

0
王雅晶

In meinem Fall wurde eine token.pickle-Datei im selben Arbeitsverzeichnis wie mein Programm erstellt. Ich hatte auch meine credentials.json-Datei im selben Verzeichnis. Alles, was ich getan habe, war, die token.pickle-Datei zu löschen, den Bereich zu ändern und sie dann auszuführen Es wird erneut nach einer Authentifizierung in Ihrem Browser gefragt und das wars, es funktioniert.

Mein Code-Snippet sieht wie folgt aus: Ich habe eine Pickle-Datei erstellt, daher musste ich sie löschen, bevor ich den Gültigkeitsbereich änderte

    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
herrogokunaruto

Ich habe lange nach dem Ort der Anmeldeinformationen gesucht. In vielen Foren wurde erwähnt, dass es sich unter c:\users\.credentials\google-api ****. Json befinden würde. Ich konnte sie jedoch nirgendwo finden. Dann habe ich herausgefunden, dass mein Programm eine token.pickle - Datei direkt im program .py Verzeichnis erstellt hat, das im Wesentlichen die Berechtigungsdatei ist.

0
Ajayvignesh