Получение ошибки 500 при использовании Google REST API

Я разрабатываю приложение для Android, которое использует новую функцию подписки Google Play. Часть моего приложения состоит из веб-сервера, который периодически проверяет статус этих подписей через вызов API. Он также отменяет некоторые из этих подписчиков.

Google предоставляет два API REST для этого:

https://developers.google.com/android-publisher/v1/purchases/get

https://developers.google.com/android-publisher/v1/purchases/cancel

Я могу заставить первого работать отлично, используя OAuth. Однако, когда я пытаюсь отменить определенные подписки, я получаю ошибку 500 без каких-либо подробностей. Кто-нибудь еще испытал это? Я использую его неправильно? Я уверен, что OAuth работает, потому что я могу попасть в первый API. Вот мой вывод curl, с некоторыми скрытыми данными моего аккаунта:

curl -X POST 'https://www.googleapis.com/androidpublisher/v1/applications/com.ssd.mypkg/subscriptions/mysku/purchases/mypurchasetoken/cancel' -H 'Authorization: OAuth ya29.myoauth' -d '' -v * About to connect() to www.googleapis.com port 443 (#0) * Trying 209.85.148.95... connected * Connected to www.googleapis.com (209.85.148.95) port 443 (#0) * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS handshake, Server hello (2): * SSLv3, TLS handshake, CERT (11): * SSLv3, TLS handshake, Server finished (14): * SSLv3, TLS handshake, Client key exchange (16): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSLv3, TLS change cipher, Client hello (1): * SSLv3, TLS handshake, Finished (20): * SSL connection using RC4-SHA * Server certificate: * subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=*.googleapis.com * start date: 2012-06-14 06:42:53 GMT * expire date: 2013-06-07 19:43:27 GMT * subjectAltName: www.googleapis.com matched * issuer: C=US; O=Google Inc; CN=Google Internet Authority * SSL certificate verify ok. > POST /androidpublisher/v1/applications/com.ssd.mypkg/subscriptions/mysku/purchases/mypurchasetoken/cancel HTTP/1.1 > User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5 > Host: www.googleapis.com > Accept: */* > Authorization: OAuth ya29.myoauth > Content-Length: 0 > Content-Type: application/x-www-form-urlencoded > < HTTP/1.1 500 Internal Server Error < Content-Type: application/json; charset=UTF-8 < Date: Fri, 06 Jul 2012 15:23:10 GMT < Expires: Fri, 06 Jul 2012 15:23:10 GMT < Cache-Control: private, max-age=0 < X-Content-Type-Options: nosniff < X-Frame-Options: SAMEORIGIN < X-XSS-Protection: 1; mode=block < Server: GSE < Transfer-Encoding: chunked < { "error": { "code": 500, "message": null } } * Connection #0 to host www.googleapis.com left intact * Closing connection #0 * SSLv3, TLS alert, Client hello (1): 

Я могу подтвердить, что у вас точно такая же проблема. Получение деталей работает отлично, но отмена не удалась. Я использую API Google для классов Java, поэтому я считаю, что это общая проблема, которую мы должны опубликовать как ошибку для google.

Вот ответ, который я получаю с сервера google:

 com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error { "code" : 500, "message" : null } 

Я также сталкиваюсь с этой ошибкой. Мое приложение публикуется только в режиме бета-тестирования. Интересно, может быть, проблема?

В случае, если это имеет значение, я использую модифицированную версию googlesamples / android-play-publisher-api, где я изменил basic_list_apks чтобы действовать как revoker-отзыв, изменив строку определения служебного вызова таким образом:

 service.purchases().subscriptions().revoke(packageName=package_name, subscriptionId=product_id, token=purchase_token) 

Я могу подтвердить ту же проблему. Это ответ, который я получил:

 { "error": { "code": 500, "message": null } } 

Я думаю, что причиной этого неудобного сообщения об ошибке является то, что подписка уже недействительна, но мы попытались ее отменить. Вместо этого мы должны сначала проверить, действительно ли подписка действительна: дата истечения срока действия, причина отмены, автоматическое обновление.

В моем конкретном случае срок действия подписки истек и cancelReason равен 1 означает, что система была отменена.

Intereting Posts
RecyclerView Adapter дает ошибку «Иерархия типа RecycleAdapter несовместима» Как я могу прокрутить список ListView? Могу ли я как-то псевдоним R в Android? Метод, вызванный после исключения release (), не смог возобновить работу с камерой android Может ли общая библиотека вызывать еще одну общую библиотеку? Как получить представление об фрагменте вне OnCreateView () Ошибка аутентификации для учетной записи Google при установке приложения Как сделать прозрачный стиль AppCompat? К сожалению, приложение остановилось в Android Emulator Динамическая высота расширенного динамического интерфейса Android Аннотация @Override в Android Как получить значение выделенного элемента Spinner для строки? Могу ли я иметь список слоев внутри селектора Попытка вызвать виртуальный метод 'android.view.Window $ Callback android.view.Window.getCallback ()' в ссылке на нулевой объект Инструмент Google Translator Toolkit для Android и iOS: как загрузить существующие переводы?