2016-03-10 1 views
9

J'ai un Google Service Account que mon application utilise pour récupérer des données de Google Analytics.Comment puis-je autoriser un compte de service Google sans le fichier d'informations d'identification par défaut?

Quand je créé le compte que je téléchargé un fichier client_secrets avec toutes les informations nécessaires à l'autorisation via OAuth, et j'enregistre le chemin d'accès à ce fichier dans une variable d'environnement appelée GOOGLE_APPLICATION_CREDENTIALS selon Google's documentation.

Je peux maintenant obtenir un client authentifié comme celui-ci:

authorization = Google::Auth.get_application_default(scopes) 

Cette méthode lit les informations d'identification sur le fichier, qui fonctionne localement, mais mon application est hébergé sur Heroku où le stockage de fichiers est impossible.

The documentation states que je peux soit fournir ce fichier (ne peut pas), exécuter mon application sur un service officiel de Google (ne sera pas), ou rencontrer une erreur.

Comment puis-je authentifier mon compte de service sans le fichier client_secrets?

Répondre

15

J'ai trouvé la réponse dans le source code de la gemme google-auth-library-ruby.

Il se trouve qu'il ya une autre option: prendre les valeurs du fichier client_secrets et les mettre dans les variables d'environnement nommé GOOGLE_ACCOUNT_TYPE, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_EMAIL et GOOGLE_PRIVATE_KEY respectivement.

Si ces clés sont remplies, les informations d'identification seront chargées à partir de là. Pas un murmure de cela dans les docs, cependant.