Мой вопрос подобен этому . Тем не менее, я использую клиентскую библиотеку API Java с учетной записью службы, вызывая вызовы API с моего сервера.
Мой код следует этому руководству, что очень просто. Тем не менее, я не могу получить соответствующую ошибку для моего запроса. Вот как я создаю свой AndroidPublisher
:
val credential = GoogleCredential.fromStream(FileInputStream( "/path/to/json" )).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER)) androidPublisher = AndroidPublisher.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(packageName) .build()
Где JSON создается из Консоли разработчика, в разделе «Учетные записи служб». Вот как я делаю свою просьбу:
androidPublisher.purchases().subscriptions().get(packageName, "valid-sku", "invalid-token").execute()
Мой идентификатор подписки действителен, но мой токен недействителен. Я ожидаю ошибку, такую как «недопустимый токен» в ответе. Однако я получаю:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request { "code" : 400, "errors" : [ { "domain" : "global", "message" : "Invalid Value", "reason" : "invalid" } ], "message" : "Invalid Value" }
Это общая ошибка из-за недействительного токена или проблема аутентификации? Если это проблема аутентификации, как ее решить? Если это недопустимый токен, как я должен знать?
Дополнительная информация:
inappproducts.list
Итак, причина, по которой это произошло, была только потому, что purchaseToken
я использовал, была неправильной.
Я не ожидал, что это будет причиной, поскольку я думал, что в случае недействительного токена я получаю ошибку «токен неверный» (или что-то подобное). Как оказалось, ответы, данные Google, довольно противоречивы (404 также могут быть предоставлены для недопустимого токена).