В платном API отказано в разрешении - PullRequest
2 голосов
/ 25 апреля 2019

Я хотел бы проверить свои покупки в приложении.

Я использую этот валидатор квитанций , который при просмотре исходного кода вызывает https://www.googleapis.com/androidpublisher/v3/applications/<appId>/purchases/products/<productId>/tokens/<token>, вот мой код, в основном скопированный из файла readme

$googleClient = new Google_Client();
$googleClient->setScopes([Google_Service_AndroidPublisher::ANDROIDPUBLISHER]);
$googleClient->setApplicationName('my project name');
$googleClient->setAuthConfig('files/googleauthconfig.json');

$validator = new Validator(new Google_Service_AndroidPublisher($googleClient));

try {
  $response = $validator->setPackageName('my.app.id')
          ->setProductId('my.product.id')
          ->setPurchaseToken('token i got from my app when purchasing')
          ->validatePurchase();
} catch (Exception $e) {
  var_dump($e->getMessage());
  exit;
}

var_dump($response);
exit;

Я жестко запрограммировал много вещей, потому что сейчас я просто пытаюсь заставить их работать. googleauthconfig.json - это консоль разработчика файлов JSON, предоставленная мне для моей служебной учетной записи, которая содержит несколько идентификаторов для учетной записи, а также закрытый ключ. Я вошел в игровую приставку и сделал свою учетную запись администратора администратором, а затем подождал около 24 часов, как предлагалось в других вопросах, для решения той же проблемы. Я настроил свои продукты, которые являются расходными и активными, и я успешно приобрел их через подписанное приложение для выпуска с тестовой кредитной картой.

Я получаю ошибку

У текущего пользователя недостаточно прав для выполнения запрошенной операции.

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

У текущего пользователя недостаточно прав для выполнения запрошенной операции.

В точности означает, что у пользователя, с которым вы проходите аутентификацию, нет прав на выполнение того, что вы пытаетесь сделать.Вы используете сервисную учетную запись.Сервисная учетная запись - это не вы.Учетные записи служб предварительно авторизованы.

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

Как уже упоминалось в комментарии, учетная запись службы обычно может занять меньше часа. После предоставления ей доступа.

возможная ошибка кода.

Iдумаю, вам следует попробовать чистый код, а не использовать свой валидатор, чтобы убедиться, что это не проблема.

$client = new Google_Client();
$client->setScopes([Google_Service_AndroidPublisher::ANDROIDPUBLISHER]);
$client->setApplicationName('my project name');
$client->setAuthConfig('files/googleauthconfig.json');    
$service = new Google_Service_AndroidPublisher($client);   

try {

  $response = $service->purchases_products->get(package_name, product_id, purchase_token);

} catch (Exception $e) {
  var_dump($e->getMessage());
  exit;
}

var_dump($response);
exit;
0 голосов
/ 26 апреля 2019

Как ни странно, как и предлагалось в других ответах, мне просто нужно было подождать в моем случае около 30 часов, прежде чем изменения разрешения вступили в силу.

...