2016-03-10 11 views
9

Ich habe eine Google Service Account, die meine App verwendet, um Daten von Google Analytics abzurufen.Wie kann ich ein Google-Dienstkonto ohne die Standardanmeldungsdatei autorisieren?

Wenn ich das Konto erstellt Ich habe eine client_secrets Datei mit allen notwendigen Informationen für die Zulassung über OAuth, und ich nahm den Pfad zu dieser Datei in einer Umgebungsvariablen GOOGLE_APPLICATION_CREDENTIALS gemäß Google's documentation genannt.

authorization = Google::Auth.get_application_default(scopes) 

Diese Methode liest die Anmeldeinformationen aus der Datei, die lokal funktioniert, aber mein app auf Heroku gehostet, wo Dateispeicher nicht möglich ist:

Ich kann jetzt einen authentifizierten Client wie diese erhalten.

The documentation states, dass ich entweder diese Datei bereitstellen kann (kann nicht), meine App auf einem offiziellen Google-Dienst ausführen (wird nicht), oder einen Fehler auftreten.

Wie kann ich meinen Dienstaccount ohne die client_secrets Datei authentifizieren?

Antwort

15

Ich fand die Antwort in der source code der google-auth-library-ruby gem.

Es stellt sich heraus, dass es eine weitere Option: die Werte aus der client_secrets Datei nehmen und sie Variablen in Umgebung mit dem Namen GOOGLE_ACCOUNT_TYPE, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_EMAIL und GOOGLE_PRIVATE_KEY sind.

Wenn diese Schlüssel ausgefüllt sind, werden die Anmeldeinformationen von dort geladen. Kein Flüstern davon in den Dokumenten.