J'ai généré une clé de serveur dans le gestionnaire d'API et tenté d'exécuter ce qui suit sur mon Mac:
curl 'https://sheets.googleapis.com/v4/spreadsheets/MySheetID?ranges=A1:B5&key=TheServerKeyIGeneratedInAPIManager'
Mais c'est ce qu'il renvoie:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Qu'est-ce que je fais de mal ici?
google-api
google-sheets
google-sheets-api
Instabrite
la source
la source
Réponses:
Pour résoudre ce problème, essayez de:
Cela a fonctionné pour moi :)
la source
Je sais qu'il est un peu tard pour répondre, mais pour d'autres personnes aux prises avec le même problème. Changez
simplement l'autorisation de la feuille en public sur votre lecteur afin qu'elle soit accessible sans authentification via des appels API.
Pour modifier l'accès:
Envoyez une requête API pour récupérer les données des feuilles sans authentification.
Remarque: si la feuille contient des données sensibles, il n'est pas sûr de la rendre publique et de le faire plutôt avec un accès authentifié.
la source
Assurez-vous de faire attention au commentaire de @ KishanPatel:
la source
Le moyen le plus simple est de résoudre le problème à l'aide de gcloud cli. Plus de documentation ici https://cloud.google.com/pubsub/docs/quickstart-cli#before-you-begin
installer gcloud
puis appelle
puis vérifiez votre projet actif et vos informations d'identification
Si ce n'est pas le cas, assurez-vous que vous êtes authentifié avec le bon compte:
Si ce n'est pas le cas, passez au compte du projet:
Selon le compte, la liste des projets sera différente:
Passer au projet prévu:
Créez ensuite les informations d'identification par défaut de l'application avec
gcloud auth application-default login
, puis google-cloud détectera automatiquement ces informations d'identification.la source
Mes 10 cents ... Un exemple simple pour lire la feuille en Java .
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();
la source