2017-08-23 4 views
1

Je suis un développeur assez nouveau. Je n'ai pas d'expérience OAuth2 et chaque fois que j'essaie de lire des explications, je n'arrive pas à comprendre ce que cela signifie dans un sens pratique.Comment l'authentification des utilisateurs fonctionne-t-elle dans l'API Google Sheets avec Python?

Voici ce que j'essaie d'accomplir. J'écris une application en Python que je veux être capable de lire une feuille Google arbitraire et de manipuler les données. J'ai suivi le guide officiel de Google here et mis en place l'exemple quickstart.py. Cela fonctionne bien, et j'ai pu l'étendre pour faire d'autres choses sans aucun problème - ayant maintenu la configuration de fichier spécifique créée dans le guide de démarrage rapide.

Maintenant, voici où je suis confus. Supposons que je souhaite que quelqu'un d'autre puisse utiliser mon application avec ses propres feuilles de calcul et compte Google maintenant. Le fichier client_secret.json n'est-il pas requis pour que l'application fonctionne? Mais n'est-ce pas (comme son nom le suggère évidemment) censé être gardé secret? Ils ont besoin de créer leurs propres informations d'identification, n'est-ce pas? Mais n'avez-vous pas besoin du fichier client_secret.json pour créer des informations d'identification en premier lieu? Comment cela fonctionne-t-il?

Qu'est-ce qui doit être en place pour que quelqu'un puisse exécuter le script Python et se connecter via son compte à une feuille de calcul à partir de la case départ? Personnellement, je ne comprends pas comment OAuth2 est censé être appliqué dans cette situation particulière au-delà de mon propre compte Google et de la configuration décrite dans le guide.

Peut-être que cette question semble trop large. Si oui, voici la ligne du bas: Comment puis-je prendre l'exemple de démarrage rapide Python décrit sur le lien here et faire en sorte que tout le monde peut simplement exécuter le script sur leur ordinateur et le faire fonctionner? (en les guidant à travers toutes les configurations nécessaires comme n'importe quelle application normale ayant besoin d'accéder à leur compte Google)

Répondre

1

Peut-être qu'une partie de la confusion provient du mot "client" dans client_secret. Le client est votre application. Oui, ses informations doivent rester secrètes dans la mesure où n'importe qui avec le client_secret peut usurper l'identité de votre application. En plus d'être une nuisance, l'impact d'une telle usurpation d'identité est minime dans la mesure où elle ne permet pas à Eve d'accéder aux données d'Alice.

Chaque utilisateur de votre application devra passer par la danse OAuth pour permettre à l'application d'accéder à ses données. Cette autorisation se manifeste dans un jeton d'actualisation et un jeton d'accès, et ce sont ces derniers que chaque utilisateur doit garder privés.

Si vous distribuez un client_secret, pensez à utiliser un compte Google sacrificiel (c'est-à-dire faux). Ainsi, tout abus n'affectera pas votre compte Google principal.

Une alternative à envisager serait de fournir à vos utilisateurs des instructions sur la façon d'enregistrer leur propre application sur la console de développement, et ainsi générer leur propre client_secret.

+0

Alors devrais-je inclure le fichier 'client_secret' lorsque je commets git ou est-ce que ce n'est pas sûr? Et si le contenu du 'client secret' était simplement copié dans une variable dans le script python et utilisé à partir de là avant de compiler le script vers un exécutable, cela serait-il une mauvaise idée? –

+0

Je suppose que cela dépend de la façon dont votre repo git est public. En règle générale, les secrets ne devraient pas être commis, mais cela pourrait avoir du sens en fonction de votre cas d'utilisation. J'ai mis à jour ma réponse avec une autre option à considérer. – pinoyyid