Попытка доступа к Google Play API - недопустимое значение - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь получить информацию о подписках моих пользователей, чтобы обновить базу данных после получения уведомлений в реальном времени от Google.Я успешно получаю токены из системы оповещений Google Pub / Sub.Я создал учетные данные Oauth2 и успешно генерирую токены доступа, чтобы попытаться получить доступ к необходимой информации из API.Но я продолжаю получать эту ошибку:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}

Мой серверный код, который перехватывает уведомления, написан на PHP.Сначала я ловлю входящую квитанцию.Затем, используя curl, я получаю токен доступа, используя токен обновления, сгенерированный для моего пользователя Oauth.Наконец, я снова использую curl, чтобы попытаться получить доступ к информации о подписке из API Google Play.

// Collect the Receipt from Google Servers

$payload = file_get_contents("php://input");
$googleArray = json_decode($payload, true);
$token = $googleArray['message']['data'];

file_put_contents('./tokenLog-'.date("H.i.s").'.log', $token, FILE_APPEND);
http_response_code(200);



// Get Access Token

$post = ["grant_type" => "refresh_token", "client_id" => "{My Client ID}", "client_secret" => "{My Client Secret}", "refresh_token" => "{My Refresh Token}"];

$ch = curl_init('https://accounts.google.com/o/oauth2/token');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
$resultArray = json_decode($result, true);
$accessToken = $resultArray['access_token'];

// close the connection, release resources used
curl_close($ch);


// Collect Subscription Information

$ch = curl_init();
$urlString = "https://www.googleapis.com/androidpublisher/v3/applications/{My Package Name}/purchases/subscriptions/{My Subscription ID}/tokens/".$token."?access_token=".$accessToken;

// Set query data here with the URL
curl_setopt($ch, CURLOPT_URL, $urlString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);


file_put_contents('./fullInfoLog-'.date("H.i.s").'.log', $result, FILE_APPEND);

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

...