Я пытаюсь получить информацию о подписках моих пользователей, чтобы обновить базу данных после получения уведомлений в реальном времени от 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);
Как видите, я регистрирую полученный токен доступа, поэтому я знаю, что я по крайней меределать эту часть правильно.Чтобы фактически получить данные подписки,