Разрешение издателя Android Отказано только в оплате чека (другие API успешно) - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь вызвать api Purchases.products: получить , чтобы проверить, что ваша покупка дает такой результат

{
 "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

Документация здесь говорится, что вы можете сделать

полученный токен не работает только для чеков на покупку для любых других 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

Я ожидаю этого результата

update 1

add tokeninfo

1 Ответ

0 голосов
/ 24 февраля 2019

Я люблю Google.

через 7 дней с моей первой учетной записью службы это сработало - но 7 дней !!!!7 дней !!!!это просто ужас

Ребята в гугле нужно 7 дней чтобы дать доступ к api !!- это смешно

Хорошо, вам нужно сделать это, чтобы получить доступ

  • создать учетную запись службы в облаке Google (права администратора)
  • создать консоль Google Play ипроект ссылки облако Google
  • добавить учетную запись службы электронной почты в игровую консоль Google
  • через 1 неделю она будет работать
...