9

Ich verwende das Java SDK für Android Publisher v2 und Oauth2 v2. Sobald ich das Dienstkonto erstellt hatte, wurde mir ein JSON von Google Play Android Developer Dienstkonto mit Client-ID, E-Mail, privatem Schlüssel usw. zur Verfügung gestellt. Ich habe versucht, mich umzusehen und herauszufinden, wie ich eine Anmeldeinformation erstellen kann, damit ich den AndoirdPublisher-Dienst zum Abrufen von Informationen verwende auf den Abonnenten meiner Android-App, Berechtigungen usw. und speichere diese Informationen auf unseren Backend-Servern.So erstellen Sie GoogleCredential mit dem Dienstkonto JSON

Ich habe Schwierigkeiten, herauszufinden, wie man das macht. Keine der Dokumentationen, die ich bisher gesehen habe, hilft beim Erstellen von GoogleCredential mit dem heruntergeladenen JSON.

Zum Beispiel gibt es diese , aber es erwähnt nur über P12-Datei und nicht die JSON. Ich möchte P12 vermeiden, wenn möglich, da ich mehrere Clients habe & Ich möchte dieses JSON in einer Art Datenbank speichern & dann verwenden, um Credential für jeden Client zu erstellen.

Nur um zu klären Ich versuche, das GoogleCredential Objekt zu erstellen, wie hier beschrieben,

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; 
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson2.JacksonFactory; 
import com.google.api.services.sqladmin.SQLAdminScopes; 

// ... 

String emailAddress = "[email protected]"; 
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
GoogleCredential credential = new GoogleCredential.Builder() 
    .setTransport(httpTransport) 
    .setJsonFactory(JSON_FACTORY) 
    .setServiceAccountId(emailAddress) 
    .setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12")) 
    .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN)) 
    .build(); 

Aber statt des Dienstkontos der Einstellung P12 mit Datei wie so setServiceAccountPrivateKeyFromP12File(), möchte ich die JSON verwenden, die das gleiche trägt Info & generiert, wenn ich das Dienstkonto erstellt habe.

+0

Nicht ganz sicher, was Sie fragen, aber Sie sollten zuerst die Schritte ausführen [hier] (https://developers.google.com/android-publisher/getting_started#using_a_service_account). Sie erfahren, wie Sie ein Dienstkonto erstellen, wenn Sie es lieber verwenden möchten. Um sicherzugehen, dass Sie tatsächlich Informationen abrufen können, aktivieren Sie die Google Play Android-Entwickler-API, verknüpfen Sie Ihr Projekt mit Ihrem Google Play-Veröffentlichungskonto und erteilen Sie Ihrem Dienstkonto die erforderlichen Berechtigungen in der Google Play Store-Konsole. – Andy

+0

@Andy Danke. Ja, ich habe bereits ein Dienstkonto erstellt und möchte den JSON verwenden, der dafür generiert wurde (anstelle der P12-Datei), um das GoogleCredential-Objekt zu erstellen. – Chantz

+0

@Andy Ich habe die Frage aktualisiert, um weitere Informationen zu geben. – Chantz

Antwort

18

Ich konnte dies lösen, indem ich mich in den Quellcode für GoogleCredential selbst auf github (die ab sofort here befindet) eingraben.

Es stellt sich heraus, die Version von google-api-java-client, die in meinem Code vorhanden war leicht datiert. Ich verbesserte es auf das neueste 1.20.0 & Ich bin jetzt in der Lage, direkt angeben, das JSON-Objekt erstellt, um die GoogleCredential zu erstellen. Ich wünschte, Google hätte seine Dokumentation aktualisiert. Hier

ist der Code-Schnipsel,

InputStream resourceAsStream = AuthTest.class.getClassLoader().getResourceAsStream("Google-Play-Android-Developer.json"); 

GoogleCredential credential = GoogleCredential.fromStream(resourceAsStream); 

Das einfach.

+6

Einige Google APIs benötigen einige Bereiche, denen Sie die Bereiche hinzufügen können: credential = credential.createScoped (PredictionScopes.all()); –

+0

Was sind die Sicherheitsrisiken, wenn du deinen JSON-Schlüssel in deine apk legst? Scheint wie eine schlechte Idee .... aber ich habe keine bessere Lösung. – Innova

+0

@Chantz Wo hast du deine 'Google-Play-Android-Developer.json'-Datei abgelegt? Ich steckte es in den Ordner "app", aber es gab mir null. –

Verwandte Themen