// 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 |