web-dev-qa-db-fra.com

API Google Sheets HTTP v4 comment accéder sans OAuth 2.0?

mon idée est de créer une feuille google, de la rendre publique puis d'y accéder depuis mon ordinateur de travail linux/bash pour lire/écrire des valeurs au quotidien.

j'ai une feuille de documentation google publique que tout le monde peut trouver/modifier. c'est l'ID de la feuille: 1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0

le faire par le livre https://developers.google.com/sheets/api/samples/reading

curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3'

retour:

{
  "error": {
  "code": 403,
  "message": "The request is missing a valid API key.",
  "status": "PERMISSION_DENIED"
  }
}

j'ai beaucoup lu et surtout ici Google Sheet API v4 j'ai trouvé une solution compliquée. c'est-à-dire si vous souhaitez accéder à votre feuille publique dans une courte période d'une heure.

vous accédez à https://developers.google.com/oauthplayground/ obtenez l'autorisation pour l'api v4, puis obtenez "Code d'autorisation", puis "Refresh token" et enfin "Access token".

en utilisant ce "jeton d'accès", vous pouvez accéder à la feuille publique comme ceci
curl 'https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3' -H "Authorization: Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2LZnT1HK2nTWzX_6oXu-NAG"

retour:

{
  "range": "Sheet1!A1:A3",
  "majorDimension": "ROWS",
  "values": [
        [
      "a1"
    ],
    [
      "a2"
    ],
    [
      "a3"
    ]
  ]
}

parfait. en théorie, le "jeton d'accès" expire après une heure, le "jeton d'actualisation" n'expire jamais. afin que vous enregistriez les jetons, essayez de lire la feuille avec le "jeton d'accès", s'il échoue, utilisez le "jeton d'actualisation" pour obtenir un nouveau "jeton d'accès" et continuez.

mais, j'ai eu une douzaine de "jetons d'actualisation" qui ont été échangés/expirés, le "code d'autorisation" a expiré, dans l'ensemble, rien ne fonctionne après quelques heures. Pourquoi?

comment puis-je accéder à ma feuille de formulaire Google bash avec curl sans ce type d'autorisation? d'autant plus que ma feuille est publique et peut être éditée par toute personne disposant d'un navigateur.

existe-t-il une autre façon de procéder avec une autre autorisation permanente? pourquoi ne pas utiliser l'email et le pass?

La "clé API" est mentionnée mais jamais expliquée. quelqu'un peut-il expliquer cette méthode étape par étape?

11
user5471256

Toutes les API Google nécessitent que vous créiez un projet sur [Google developer console 1 et que vous vous identifiiez ainsi que votre application, même pour accéder aux données publiques. Étant donné que vous avez défini la feuille sur public, vous pouvez simplement aller à console développeur Google et créer une clé API publique, n'oubliez pas d'activer l'API Google Sheet. Ensuite, ajoutez simplement key = [YourKey] comme paramètre sur votre demande.

Mettre à jour la console de développement:

Créez un projet et obtenez la clé:

console développeur Google -> créer un projet -> informations d'identification menu déroulant -> clé API

enter image description here

Activez-le:

console développeur Google -> bibliothèque les feuilles de recherche le permettent.

Mise à jour :

{"error": {"code": 403, "message": "Il manque une clé API valide à la demande.", "status": "PERMISSION_DENIED"}}

Signifie que vous ne vous êtes pas identifié à Google. En 2015, Google Start exige que nous nous identifions, vous ne pouvez pas simplement utiliser une API Google sans dire à Google qui vous êtes. Pour ce faire, créez un projet sur la [console développeur Google 1 . Créez une clé API et utilisez cette clé API dans toutes vos demandes. Cela ne fonctionne qu'avec des données publiques.

https://sheets.googleapis.com/v4/spreadsheets/1F6jh6756xNDlDYIvZm_3TrXb59EFEFHGEC7jdWz-Nx0/values/Sheet1!A1:A3?key=YOurKEY

Remarque: Avec les données utilisateur privées, vous devez utiliser OAuth et utiliser access_token = votre token ou définir l'en-tête

Autorisation: Bearer ya29.GlvaBLjrTdsSuSllr3u2nAiC-BOsjvIOE1x5afU3xiafB-FTOdLWDtfabuIMGF1rId5BsZxiTXxrx7VDEtxww4Q1uvW9zRndkfm3I2KZTX.

Un jeton d'accès n'est pas la même chose qu'une clé API.

15
DaImTo