Nicht in der Lage zu Holen Sie sich die Informationen zu den Abonnements von Google Play Android Developer API
Ich'trying die Verwendung von Google APIs-Client-Bibliothek für Java, um Informationen über Benutzer-Abonnements erworben in meine android-app. Hier ist, wie mache ich denn jetzt:
HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(GOOGLE_CLIENT_MAIL)
.setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher")
.setServiceAccountPrivateKeyFromP12File(new File(GOOGLE_KEY_FILE_PATH))
.build();
Androidpublisher publisher = new Androidpublisher.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).
setApplicationName(GOOGLE_PRODUCT_NAME).
build();
Androidpublisher.Purchases purchases = publisher.purchases();
Get get = purchases.get("XXXXX", subscriptionId, token);
SubscriptionPurchase subscripcion = get.execute(); //Exception returned here
GOOGLE_CLIENT_MAIL
ist die E-Mail-Adresse von API-Zugriff über die Google-Konsole.
GOOGLE_KEY_FILE_PATH
ist die p12-Datei heruntergeladen API-Zugriff.
GOOGLE_PRODUCT_NAME
ist der Produkt name von der branding-Informationen.
In der Google APIS-Konsole den Dienst "Google Play Android Developer API" aktiviert ist.
Was ich bekomme ist:
{
"code" : 401,
"errors" : [ {
"domain" : "androidpublisher",
"message" : "This developer account does not own the application.",
"reason" : "developerDoesNotOwnApplication"
} ],
"message" : "This developer account does not own the application."
}
Ich wirklich zu schätzen Ihre Hilfe für dieses Problem...
InformationsquelleAutor der Frage Jonathan Naguin | 2012-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe es funktioniert! Die Schritte, die ich gefolgt:
Voraussetzung
Bevor Sie beginnen, benötigen wir zum erzeugen einer refresh-token. Um dies zu tun müssen wir zuerst erstellen Sie ein APIs-konsolenprojekt:
Konto (das gleiche Konto in Android-Entwickler-Konsole hochladen der APK).
logo ist nicht erforderlich.
und Javascript-Ursprünge. Wir werden ihn später verwenden Sie die redirect-URI.
So, jetzt können wir generieren die refresh-token:
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID
Erstellen Sie eine main-Klasse mit:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
undGOOGLE_REDIRECT_URI
sind die vorher-Werte.Endlich haben wir unsere refresh-token! Dieser Wert schließt nicht ab, so können wir den Shop in einer Seite, wie eine property-Datei.
Zugriff auf Google Play Android Developer API
Immer die access token. Wir müssen unsere vorher refresh token:
}
Nun können wir den Zugriff auf die Android-API. Ich bin interessant, in der die Ablaufzeit eines Abonnements, so:
}
Und das ist alles!
Einige Schritte von https://developers.google.com/android-publisher/authorization.
InformationsquelleAutor der Antwort Jonathan Naguin
Zu Huckepack auf Jonathan Naguin ist Super Antwort, hier ist ein nodejs-version zu bekommen, um die regenerierungs-und Zugangs-token:
InformationsquelleAutor der Antwort KoboldAtWork
Für diejenigen, die möchten, überprüfen Sie den Abo-status auf Google ' s AppEngine mit Java, hier ist mein Beispiel basiert auf viele codes gefunden. Ich verbrachte zwei Tage zu lösen, viele Fehler, verursacht durch mangelnde Erfahrung. Ich sehe viele Vorschläge zu prüfen, Abonnement-status auf dem server, aber es war nicht leicht für mich zu tun auf der AppEngine. Ohne Antworten gefunden auf SO, ich konnte nicht kommen, mit dieser.
Schritt 1
Zunächst müssen wir gehen durch "Voraussetzung" Abschnitt gefunden auf Jonathan Naguin Antwort, bis Sie code vom web-browser. Jetzt haben Sie;
bereit.
Hinweis: wir führen alle codes, die unten auf AppEngine. Und ich logger wie diese.
Schritt 2
Brauchen wir die refresh-token. Führen Sie den code unten gezeigt, nach dem Austausch [KUNDEN-ID], [CLIENT SECRET], [CODE], [REDIRECT URI] mit Ihrem string.
Da die refresh-token nicht verfallen, können wir speichern Sie es irgendwo, oder einfach nur hart-code in unserem code. (Wir müssen nur über code einmal zu aktualisieren token.)
Schritt 3
Wir brauchen, um Zugangs-token. Führen Sie den code unten gezeigt, nach dem Austausch [KUNDEN-ID], [CLIENT SECRET], [REFRESH TOKEN] mit Ihrem string.
Schritt 4
Was ich wissen wollte ist einfach nur verfallen UTC des Abonnements. Code gezeigt unten zurück verfallen UTC, 0, wenn Fehler gefunden. Sie benötigen Ihr Paket Namen, die Produkt-id (=Abo-id), access-token, den Sie bekam auf Schritt 3, und Kauf Tokens, die Ihr in euren Kauf-Daten.
Hinweis: Produkt-id-oder Abo-id ist eine Zeichenfolge gefunden, die auf Entwickler-Konsole. Ihr Abonnement Element wird mit dem Namen/id-Spalte. Es sieht so aus.
Letzten Schritt (lustiges Teil)
Nun haben wir alle Komponenten, um zu überprüfen, Abonnement gültig ist oder nicht. Ich Tat wie dieser. Ersetzen Sie [IHR Paketname], [PRODUKT-ID] mit Ihnen.
Müssen Sie kaufen Daten die Sie bekommen können Kauf - #getOriginalJson() gefunden in iabHelper code.
Hinweis für die Fehlersuche
Google gibt JSON-string für die Antwort. Wenn der code nicht funktioniert wie erwartet, Protokollierung JSON-string kann helfen, zu verstehen, was falsch ist.
Ich hoffe, das jemand hilft.
InformationsquelleAutor der Antwort Tomcat
Können Sie
com.google.api-client
undgoogle-api-services-androidpublisher
Bibliotheken.Zuerst gehen Sie zu dem Projekt auf der google developer-Konsole (https://console.developers.google.com)
Dann fügen Sie das gerade erzeugte E-Mail-Adresse für das service-Konto, um Ihre google play developer console (https://play.google.com/apps/publish/)
@developer.gserviceaccount.com
E-Mail-KontoNun auf den code. Fügen Sie die folgende Abhängigkeit zu Ihrem pom.xml Datei:
Dann erstmal validieren der Signatur:
Wenn die Signatur überprüft Holen Abonnement-details:
Diese kümmert sich um alle die token-Probleme, die durch die Erzeugung eines JWT token, so dass Sie nicht haben, um es sich selbst.
InformationsquelleAutor der Antwort Miha Hribar
Ich bin mir ziemlich sicher, dass Sie müssen verwenden Sie Ihre Client-ID, nicht die E-Mail-Adresse. Es sieht wie folgt aus: 37382847321922.apps.googleusercontent.com
Sehen https://developers.google.com/android-publisher/authorization
Und ich bin mir ziemlich sicher, dass Sie nicht brauchen eine P12-Datei. Sie brauchen nur die
Versuchen, es zu tun manuell über die Befehlszeile erste, mit 'wget'.
InformationsquelleAutor der Antwort Chloe