web-dev-qa-db-fra.com

Accéder à l'API de feuille de calcul Google sans jeton d'authentification

J'ai créé Google Spreadsheet et doté d'un accès en édition à tous (peut éditer même sans connexion).

Voici le lien . Je souhaite mettre à jour cette feuille avec l'API Google Spreadsheet. Mais je reçois une erreur. Mon exigence est de mettre à jour la feuille via l'API même sans identifiant d'accès.

enter image description here

10
Nageswaran

Il est possible d'écrire sur une feuille de calcul sans OAuth ou API Keys. Vous devez utiliser Service Account Keys

Voici ce que j'ai fait pour mon environnement Node.js. 

  1. Obtenez une clé de compte de service à partir de https://console.cloud.google.com/apis/credentials (vous pouvez également restreindre l'utilisation de cette clé)
    1. Lors de la création, assurez-vous de cliquer sur le Furnish a new private key
    2. Sélectionnez JSON quand il vous est demandé comment télécharger la clé.
  2. Le service account key que vous venez de générer comprend un client_email.
    1. Accédez à votre feuille de calcul Google et autorisez ce client_email à avoir un accès en écriture sur ce document.
  3. Utilisez le code suivant pour vous authentifier

    let jwtClient = new google.auth.JWT(client_email, null, private_key, [ "https://www.googleapis.com/auth/spreadsheets", ]);//authenticate requestjwtClient.authorize(function(err, tokens) { // at this point the authentication is done you can now use `jwtClient` // to read or write to the spreadsheet});

client_email et private_key font partie du service account key

Une description plus détaillée peut être trouvée ici. http://isd-soft.com/tech_blog/accessing-google-apis-using-service-account-node-js/ De plus, tout le mérite revient à cette page. 

4

Vous devez être autorisé à faire de telles demandes

Chaque demande que votre application envoie à l'API Google Sheets doit identifiez votre application auprès de Google. Il y a deux façons d'identifier votre application: en utilisant un jeton OAuth 2.0 (qui autorise également la demande ) et/ou en utilisant la clé API de l'application. Voici comment. déterminer laquelle de ces options utiliser:

Si la demande nécessite une autorisation (telle qu'une demande de données privées d'un ), L'application doit alors fournir un OAuth 2.0 jeton avec la demande. L'application peut également fournir la clé API, mais ce n'est pas obligatoire. Si la demande ne nécessite pas autorisation (telle qu'une demande de données publiques), puis le L’application doit fournir la clé d’API, un jeton OAuth 2.0 ou les deux, quelle que soit l'option qui vous convient le mieux.

C'est tout. Il n'y a pas d'autorisation de contournement.

3
noogui

Enfin, creusé assez profondément et trouvé la réponse. Tout type d'écriture, même sur des feuilles publiquement éditables, nécessite un flux OAuth:

https://issuetracker.google.com/issues/36755576#comment3

0
Andrew