wake-up-neo.net

Die Google Sheets-API gibt "Der Anrufer hat keine Berechtigung" zurück, wenn der Serverschlüssel verwendet wird

Ich habe im API Manager einen Serverschlüssel generiert und versucht, Folgendes auf meinem Mac auszuführen:

curl 'https://sheets.googleapis.com/v4/spreadsheets/MySheetID?ranges=A1:B5&key=TheServerKeyIGeneratedInAPIManager'

Aber genau das gibt es zurück:

{
 "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

Was mache ich hier falsch?

24
Instabrite

Ich weiß, es ist etwas spät, um zu antworten, aber für andere Menschen, die mit dem gleichen Problem kämpfen.
Ändern Sie einfach die Berechtigung des Arbeitsblatts in public auf Ihrem Laufwerk, damit Sie ohne Authentifizierung über API-Aufrufe darauf zugreifen können. 

Zugang ändern: 

  1. Blatt in Google-Laufwerk öffnen
  2. Klicken Sie in der rechten oberen Ecke auf "Teilen"
  3. Klicken Sie unten im Eingabeaufforderungsfenster auf Erweitert
  4. Berechtigung für öffentliche oder Personen mit Link ändern (keine Anmeldung erforderlich) 

Senden Sie eine API-Anforderung zum Abrufen von Daten aus Arbeitsblättern ohne Authentifizierung. 

Hinweis: Wenn das Blatt sensible Daten enthält, ist es nicht sicher, es öffentlich zu machen und es mit authentifiziertem Zugriff zu tun. 

27
WLatif

Um dieses Problem zu lösen, versuchen Sie Folgendes:

  1. erstellen Sie ein Servicekonto: https://console.developers.google.com/iam-admin/serviceaccounts/
  2. erstellen Sie unter Optionen einen Schlüssel: Dieser Schlüssel ist Ihr gewöhnlicher client_secret.json - verwenden Sie ihn auf dieselbe Weise
  3. fügen Sie dem Dienstkonto die Eigentümerberechtigung hinzu (Mitgliedsname = Dienstkonto-ID = E-Mail des Dienstkontos, z. B. [email protected]
  4. kopieren Sie die E-Mail-Adresse Ihres Dienstkontos = Dienstkontonummer
  5. gehen Sie einfach in Ihrem Browser zu dem Google-Blatt, mit dem Sie interagieren möchten
  6. gehen Sie zu SHARE oben rechts auf Ihrem Bildschirm
  7. gehen Sie zu den erweiterten Einstellungen und teilen Sie es mit der E-Mail-Adresse Ihres Dienstkontos, z. B. [email protected]

Es hat für mich funktioniert :)

18

Achten Sie unbedingt auf den Kommentar von @ KishanPatel:

Sie können dieses Arbeitsblatt auch mit bestimmten E-Mail-Nachrichten teilen. dein Dienst Konto- (Projekt-) E-Mail. "client_email": "[email protected]", Dies erlaubt. auf das Blatt durch Ihr Skript zugreifen.

7
Horen

Der einfachste Weg ist die Verwendung von gcloud cli. Weitere Dokumente hier https://cloud.google.com/pubsub/docs/quickstart-cli#before-you-begin

Wenn Sie dieses Tool verwenden können, rufen Sie an

gcloud init

Überprüfen Sie dann Ihr aktives Projekt und Ihre Anmeldeinformationen

gcloud config configurations list

Wenn es nicht in Ordnung ist, stellen Sie sicher, dass Sie mit dem richtigen Konto authentifiziert sind:

gcloud auth list
* account 1
  account 2

Ändern Sie das Konto des Projekts, falls nicht:

gcloud config set account `ACCOUNT`

Je nach Konto unterscheidet sich die Projektliste:

gcloud projects list

- project 1
- project 2...

Zum geplanten Projekt wechseln:

gcloud config set project `PROJECT NAME`

Erstellen Sie anschließend Anwendungs-Standardanmeldeinformationen mit gcloud auth application-default login und google-cloud erkennt solche Anmeldeinformationen automatisch.

1
Yuliia Ashomok