Разрешение издателя Android Отказано только в оплате чека (другие API успешно)
Я пытаюсь позвонить в API. Покупки.продукты: получить подтверждение вашей покупки дает такой результат
{
"error": {
"errors": [
{
"domain": "androidpublisher",
"reason": "permissionDenied",
"message": "The current user has insufficient permissions to perform the requested operation."
}
],
"code": 401,
"message": "The current user has insufficient permissions to perform the requested operation."
}
}
- проект привязан правильно
- Создана новая учетная запись службы с правами владельца
- Этой учетной записи службы были предоставлены права в консоли Google Play.
Документация здесь говорит о том, что вы можете сделать
полученный токен не работает только для чеков на покупку для любых других API, он возвращает результат (Inappproducts: список работает)
URL-адрес подтверждения построен правильно, потому что если вы получаете токен- клиент на сервер, то этот API-интерфейс также работает - но мне нужна межсерверная аутентификация
scopes = ['https://www.googleapis.com/auth/androidpublisher']
authorization = Google::Auth.get_application_default(scopes)
uri = "https://www.googleapis.com/androidpublisher/v3/applications/#{ENV['ANDROID_PACKAGE_NAME']}/purchases/products/#{purchasable.purchase_uuid}/tokens/#{purchase_token}?access_token=#{authorization.fetch_access_token!['access_token']}"
response = RestClient::Request.execute method: :get,
url: uri,
headers: {'Content-Type':'application/json'}
а также
file = File.read('config/google_key.json')
values = JSON.parse(file)
oauth = Signet::OAuth2::Client.new(
issuer: values[:client_email]",
audience: "https://www.googleapis.com/oauth2/v4/token",
scope: "https://www.googleapis.com/auth/androidpublisher",
client_id: values[:client_id],
signing_key: OpenSSL::PKey::RSA.new(values[:private_key]),
)
jwt = oauth.to_jwt
url = "https://www.googleapis.com/oauth2/v4/token"
begin
response = RestClient::Request.execute method: :post,
url: url,
headers: {'Content-Type': 'application/json'},
payload: {
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: jwt
}
result = JSON.parse response.body
rescue => e
puts e.response.to_str
result = JSON.parse(e.response.to_s)
end
Я ожидаю этого результата
обновление 1
добавить tokeninfo
1 ответ
Я люблю Google.
через 7 дней с моей первой учетной записью все заработало - но 7 дней!!!! 7 дней!!!! это просто ужас
Ребята в гугле нужно 7 дней чтобы дать доступ к api!! - это нелепо
Хорошо, вам нужно сделать это, чтобы получить доступ
- создать учетную запись службы в облаке Google (права администратора)
- создать консоль google play и связать проект с облаком Google
- добавить учетную запись службы электронной почты в консоли Google Play
- через 1 неделю это сработает