2014-01-29 6 views
3

Я прилипаемость со следующей проблемой, как уже через месяц, я пытаюсь верифицировать покупку InApp с помощью следующего API: https://developers.google.com/android-publisher/authorizationGoogle API код AndroidPublisher ошибка 403

Я последовал за каждый шаг от документации (делать Everthing с клиентом Postman Rest Client из Chrome), я могу получить токен для доступа и токен обновления, но всякий раз, когда я пытаюсь запросить покупку, это приводит к тому, что код ошибки 403 не настроен, НО Я КОНФИГУРИРОВАЛ ЭТО В НАСТРОЙКАХ!

может быть кто-нибудь с идеей?

+0

Проверить ХТ tp: //stackoverflow.com/a/24264696/165708 для решения с помощью библиотек Google. –

ответ

4

Далеко не просто получить accesstoken для этого API. This blog post помог мне начать работу в правильном направлении, но я изложил свой собственный процесс, который не зависит от использования каких-либо внешних скриптов для работы. Шаги:

  1. Получить идентификатор клиента и секретный (разово)
  2. получить токен обновления (разовый)
  3. Используйте Refresh Токен, чтобы получить маркер доступа (один раз в час) 4 Используйте маркер доступа для доступа к API

Каждый из этих этапов подробно описаны ниже:

Получение идентификатора клиента и Secret

  1. Перейти к в Google Developer's console
  2. Перейти на страницу проекта
  3. Выберите «Согласие экрана» на левой стороне и убедитесь, что адрес электронной почты и название продукта поля установлены
  4. Select " «Учетные данные» в меню слева и выберите «создать новый идентификатор клиента»
  5. Оставьте тип приложения «Веб-приложение» и установите «Авторизованный URI-редирект» на https://localhost. Вам не нужно изменять Авторизованный исходный код JavaScript.
  6. Нажмите «Создать идентификатор клиента» и запишите его идентификатор клиента и клиента.

Получение токен обновления

  1. В веб-браузере введите следующий URL (заменяющий правильное значение для client_id): https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=https://localhost&client_id=XXXX

  2. Accept любые запросы для авторизации, которые появляются

  3. Затем вы будете перенаправлены на URL-адрес:

    https://localhost/?code=4/k0TenvwICIgmBoQOazJy4_EnJr6-.clLqtp_vVAIbEnp6UAPFm0GASPqQigI

    Скопируйте код из последней части этого URL

  4. Использование Wget для преобразования этого кода в знак обновления; заменителем КОД, CLIENT_ID и client_secret

    wget --debug --post-data="grant_type=authorization_code&code=CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=https://localhost" https://accounts.google.com/o/oauth2/token

  5. Полученный файл в формате JSON будет содержать access_token и refresh_token. Регистрируют значение refresh_token

Получение маркер доступа

  1. отправить запрос POST к https://accounts.google.com/o/oauth2/token со следующими полями, установленными (заменой REFRESH_TOKEN, CLIENT_ID, client_secret)
    • grant_type = refresh_token
    • refresh_token = REFRESH_TOKEN
    • client_id = CLI ENT_ID
    • client_secret = client_secret

вы получите обратно JSON строку, содержащую access_token, что будет хорошо в течение одного часа.

Используя маркер доступа, чтобы сделать запрос API

Fetch из

https://www.googleapis.com/androidpublisher/v1.1/applications/PACKAGENAME/inapp/SKU/purchases/PURCHASETOKEN

с заголовком Authorization, содержащий маркер доступа, например:

Authorization: Bearer ya29.1.AADtN_WoM4-4Fb1voFL-emcUWluijCzwvc9Z-FYM9SPvK03HCbGkdROJTVVPSLHK2IlVJQ

You может также быть в состоянии передать t он указывает токен доступа как параметр HTTP-запроса, например.

https://www.googleapis.com/androidpublisher/v1.1/applications/PACKAGENAME/inapp/SKU/purchases/PURCHASETOKEN?authorization_token=AUTHTOKEN

0

У меня была аналогичная проблема, как вы. Ответ mmigdol полезен, но мне это не помогло.Я наконец-то удалось решить, посмотрев на ссылки, сгенерированные здесь: https://developers.google.com/oauthplayground/

Видимо, ОБЪЕМА Android издатель

https://www.googleapis.com/auth/androidpublisher 

должен быть добавлен в ссылку запрашивающей код авторизации (еще до создания токена обновления), добавив:

&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher 

, чтобы получить это:

https://accounts.google.com/o/oauth2/auth?redirect_uri=<YOUR_REDIRECT_URI>&response_type=code&client_id=<YOUR_CLIENT_ID>&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&approval_prompt=force&access_type=offline 
Смежные вопросы