Я пытаюсь осуществить проверку покупки в своем бэкэнде, как рекомендую Документы Google-Play-Billing .Следуя этой документации для подтверждения покупки подписки, он говорит мне, что я должен сделать запрос на получение этого URL ( Purchases.subscription: get ) с именем пакета моего приложения для Android *, subscription_id и токен покупки .Однако, прежде чем я смогу сделать запрос на получение этого URL, я должен авторизовать свой внутренний сервер для запросов API.Итак, перейдя по ссылке в этой документации на здесь , я начал следовать этим шагам.Я создал идентификатор клиента OAuth 2.0 , а затем сгенерировал начальный токен обновления, перейдя по следующему URL в моем браузере.Мой client_id был установлен на мой идентификатор клиента OAuth 2.0 , который только что был сгенерирован, а мой redirect_uri был установлен на urn: ietf: wg: oauth:2.0: oob , который я получил из файла JSON, загруженного из Google API Console .Я успешно получил свой первоначальный токен обновления и поместил его в свой код бэкенда.
Теперь цель состоит в том, чтобы сделать успешную покупку в моем приложении для Android, а затем отправить запрос на отправку в мой бэкэнд с необходимыми параметрами.Эта часть работает просто отлично.Однако при выполнении следующих шагов документации по авторизации часть, в которой говорится " Обменяйте этот код для пары токенов доступа и обновления, отправив запрос POST на ... «Чтобы получить мой код доступа , я установил в полях то, что говорят документы, чтобы установить поля, но мой запрос возвращается как ошибка 400 с сообщением об ошибке:« invalid_grant ».Я не понимаю, почему я получаю эту ошибку.
Вот мой код почтового запроса:
List <NameValuePair> parameters = new ArrayList <>();
parameters.add(new BasicNameValuePair("grant_type", "authorization_code"));
parameters.add(new BasicNameValuePair("code", initial_code));
parameters.add(new BasicNameValuePair("client_id", client_id));
parameters.add(new BasicNameValuePair("client_secret", client_secret));
parameters.add(new BasicNameValuePair("redirect_uri", redirect_uri));
RequestConfig requestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
HttpClientBuilder httpClientBuilder = HttpClients.custom().setDefaultRequestConfig(requestConfig);
try (CloseableHttpClient httpClient = httpClientBuilder.build()) {
HttpPost request = new HttpPost("https://accounts.google.com/o/oauth2/token");
request.addHeader("content-type", "application/x-www-form-urlencoded");
request.setEntity(new UrlEncodedFormEntity(parameters));
try (CloseableHttpResponse response = httpClient.execute(request)) {
HttpEntity entity = response.getEntity();
final StatusLine statusLine = response.getStatusLine();
if (entity != null) {
System.out.println("Response returned: " + statusLine.getStatusCode() + " - " + EntityUtils.toString(entity));
}
}
}
Пожалуйста, помогите!