본문 바로가기

php

php Google AndroidPublisher reviews api

	// include your composer dependencies
	//echo __DIR__;exit;
	require_once __DIR__.'/../../../vendor/autoload.php'; //경로는 맞게 넣어주세요
	$client = new \Google\Client();
// 서비스 계정 Credentials  
	putenv('GOOGLE_APPLICATION_CREDENTIALS=json파일경로');
	$client->useApplicationDefaultCredentials();

	$redirect_uri = "redirect full 주소"; // 필수
	$package_name = "패키지 이름";
	$app_name = "앱이름"; // 선택사항

// 웹 어플리케이션 사용자 인증정보
	$client->setAuthConfig('json파일경로');

	$client->addScope(\Google_Service_AndroidPublisher::ANDROIDPUBLISHER);
	$client->setApplicationName($app_name);
	$client->setRedirectUri($redirect_uri);

	$client->setAccessType('offline');
	$client->setApprovalPrompt('force'); //refresh 토큰 얻기

	$response = "";
	$authUrl = $client->createAuthUrl();
	$tokenPath = '/home/ec2-user/token.json';

// gOOgle start

if (isset($_GET['code'])) {
	$authCode = $_GET['code'];
	// Exchange authorization code for an access token.
	$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
	file_put_contents($tokenPath, json_encode($accessToken));
	header('Location: ' . filter_var($redirect_uri,   FILTER_SANITIZE_URL));
}

if (file_exists($tokenPath)) {
  $accessToken = json_decode(file_get_contents($tokenPath), true);
  $client->setAccessToken($accessToken);
}

// If there is no previous token or it's expired.
if ($client->isAccessTokenExpired() ) {
// Refresh the token if possible, else fetch a new one.


if ($client->getRefreshToken()) {
    $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
} else {
    // Request authorization from the user.
    
    echo "<a class='login' href='$authUrl'>Connect Me!!!!!!</a>";
	echo "Exchange authorization code for an access token.";
    // Exchange authorization code for an access token.

    $accessToken = $client->fetchAccessTokenWithAuthCode($_GET['code']);
	$client->setAccessToken($accessToken);

		
    // Check to see if there was an error.
    if (array_key_exists('error', $accessToken)) {
	throw new Exception(join(', ', $accessToken));
    }
}
// Save the token to a file.
if (!file_exists(dirname($tokenPath))) {
    mkdir(dirname($tokenPath), 0700, true);
}
	file_put_contents($tokenPath, json_encode($accessToken));
}

// gOOgle end

$optParams = array(
  "startIndex"=> 0,
  "maxResults"=> 23,
  "token"=> '',   // access_token 넣으면 404에러 나온다. 모르면 빈 값
  "translationLanguage"=>"en"
);

try {

  $service = new \Google_Service_AndroidPublisher($client);
  $response = $service->reviews->listReviews($package_name,$optParams);

}
catch (Google_Service_Exception $e) {
  $json = $e->getMessage();
  echo $json;
}
/*
echo "<pre>";
print_r($response); //tokenPagination
echo "</pre>";
*/
$cnt = 0;

for($i=0;$i< count($response->reviews); $i++){

  echo $response->reviews[$i]->comments[0]->userComment -> starRating;
  echo "<br/>";
  echo $response->reviews[$i]->comments[0]->userComment -> text;
  echo "<br/>";

  $date = $response->reviews[$i]->comments[0]->userComment -> lastModified -> seconds;
  echo date('Y-m-d H:i:s',$date);
  echo "<br/>";
  $cnt++;
}
echo "카운트<pre>";
print_r($cnt);
echo "</pre>";

구글측 메일 확인 사항

  • Reply to reviews API는 사용자가 지난주에 생성했거나 수정한 리뷰만 가져올 수 있습니다(약 2주).
  • Google Play Developer API를 사용하기 위해 해당 API가 사용설정된 Cloud project를 다음 페이지에서 연결시도해 보시기 바랍니다.
    Play Console > 설정 > 개발자 계정 > API 엑세스 > 연결된 Google Cloud 프로젝트 > 기존 프로젝트 연결
  • 프로젝트는 1개밖에 연결할 수 없으며 서비스 계정을 생성 후 프로젝트를 접근할 수 있는 권한을 주면 된다고 하였습니다.(이 부분에 대한 메일은 삭제가 되어 그대로 옮기질 못하였습니다.)
  • 또한, 만약 Oauth Client ID가 아닌 서비스 계정을 사용하시는 거라면 개인 사용자의 사용자 인증 정보를 제공하지 않고 빌드 서버에서 API에 액세스할 수도 있습니다.
    관련 도움말 : (https://developers.google.com/android-publisher/getting_started#using_a_service_account)

'php' 카테고리의 다른 글

php ftp 디렉토리 용량 구하기  (0) 2023.08.07
php ftp 함수  (0) 2023.08.07
[PHP] 게시글 자동 등록 방지(회원 자동 가입 방지)코드 만들기 - CAPTCHA_퍼옴  (0) 2013.12.05
memcache restart  (0) 2013.12.04
CURL 사용법  (0) 2013.02.05