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 das ist es, was es zurückgibt:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Was mache ich hier falsch?
google-api
google-sheets
google-sheets-api
Instabrite
quelle
quelle
Antworten:
Um dieses Problem zu lösen, versuchen Sie:
Es hat bei mir funktioniert :)
quelle
Ich weiß, dass es etwas spät ist zu antworten, aber für andere Menschen, die mit dem gleichen Problem zu kämpfen haben. Ändern Sie
einfach die Berechtigung des Arbeitsblatts auf Ihrem Laufwerk in "Öffentlich" , damit Sie ohne Authentifizierung über API-Aufrufe darauf zugreifen können.
So ändern Sie den Zugriff:
Senden Sie eine API-Anfrage, um Daten von Blättern ohne Authentifizierung abzurufen.
Hinweis: Wenn das Blatt vertrauliche Daten enthält, ist es nicht sicher, sie öffentlich zu machen, sondern mit authentifiziertem Zugriff.
quelle
Achten Sie unbedingt auf den Kommentar von @ KishanPatel:
quelle
Am einfachsten ist es, das Problem mit gcloud cli zu beheben. Weitere Dokumente finden Sie hier https://cloud.google.com/pubsub/docs/quickstart-cli#before-you-begin
gcloud installieren
Dann ruf an
Überprüfen Sie dann Ihr aktives Projekt und Ihre Anmeldeinformationen
Wenn dies nicht in Ordnung ist, stellen Sie sicher, dass Sie mit dem richtigen Konto authentifiziert sind:
Wechseln Sie zum Projektkonto, wenn nicht:
Je nach Konto ist die Projektliste unterschiedlich:
Zum beabsichtigten Projekt wechseln:
Erstellen Sie dann Standardanmeldeinformationen für Anwendungen mit
gcloud auth application-default login
, und Google Cloud erkennt diese Anmeldeinformationen automatisch.quelle
Meine 10 Cent ... Ein einfaches Beispiel, um das Blatt mit Java zu lesen .
private Credential getCredentials() throws IOException { final InputStream accessKey = new ByteArrayInputStream("<credential json>"); final GoogleCredential credential = GoogleCredential.fromStream(accessKey) .createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS_READONLY)); return credential; } private HttpTransport httpTransport() { try { return GoogleNetHttpTransport.newTrustedTransport(); } catch (GeneralSecurityException | IOException e) { throw new SpreadSheetServiceException(e); } } Sheets service = new Sheets.Builder(httpTransport(), JSON_FACTORY, getCredentials()) .setApplicationName("app-name") .build(); ValueRange response = service.spreadsheets().values() .get("<spread_sheet_id>", "A1:A") .execute();
quelle