Page 1 of 1

Google Play Developer API – 400 Ungültiger Wert – InAppPurchases

Posted: 20 Jan 2025, 14:57
by Guest
Meine Frage ähnelt dieser. Allerdings verwende ich die API-Java-Clientbibliothek mit einem Dienstkonto und rufe die API von meinem Server aus auf.

Mein Code folgt dieser Anleitung, die sehr einfach ist . Allerdings erhalte ich für meine Anfrage keine entsprechende Fehlermeldung. So erstelle ich meinen AndroidPublisher:

Code: Select all

val credential = GoogleCredential.fromStream(FileInputStream(
"/path/to/json"
)).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER))

androidPublisher = AndroidPublisher.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(packageName)
.build()
Hier wird der JSON von der Entwicklerkonsole unter „Dienstkonten“ generiert. So stelle ich meine Anfrage:

Code: Select all

androidPublisher.purchases().subscriptions().get(packageName, "valid-sku", "invalid-token").execute()
Meine Abonnement-ID ist gültig, aber mein Token ist ungültig. Ich erwarte einen Fehler wie „ungültiges Token“ in der Antwort. Was ich jedoch bekomme, ist:

Code: Select all

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Invalid Value",
"reason" : "invalid"
} ],
"message" : "Invalid Value"
}
Ist das ein allgemeiner Fehler aufgrund des ungültigen Tokens oder handelt es sich um ein Authentifizierungsproblem? Wenn es sich um ein Authentifizierungsproblem handelt, wie kann ich es lösen? Woher soll ich das wissen, wenn es sich um ein ungültiges Token-Problem handelt?

Einige weitere Informationen:
  • Ich erhalte die gleiche Fehlermeldung, wenn ich versuche, diesen Aufruf auch über den API Explorer durchzuführen (diesmal unter Verwendung einer Client-ID und eines API-Schlüssels anstelle eines Dienstkontos).
  • Ich habe keinen domänenweiten Zugriff auf das Dienstkonto delegiert. Muss ich das aus irgendeinem Grund tun?
  • Ich kann erfolgreich andere Aufrufe an die API durchführen, z. B. inappproducts.list