本文实例讲述了PHP实现自动登入google play下载app report的方法,有不错的实用价值。分享给大家供大家参考。具体实现步骤如下:
一、流程:
1.登入google play
登入google play需要三步:
https://play.google.com/apps/publish/
https://accounts.google.com/ServiceLogin?hl=en&continue=https://play.google.com/apps/publish/
https://accounts.google.com/ServiceLoginAuth
2.下载app report zip
3.unzip report
二、实现代码如下:
-
Login google play,download report,unzip
-
Date: 2013-04-17
-
Author: fdipzone
-
Version: 1.0
*/
class AndroidReportDownLoader{private $username;
private $password;
private $dev_acc;/* init
- @param String $username google play account
- @param String $password google play password
- @param String $dev_acc google play dev account
*/
public function __construct($username='',$password='',$dev_acc=''){
$this->username = $username;
$this->password = $password;
$this->dev_acc = $dev_acc;
}
/*
-
@param String $appname
-
@param String $sd 开始日期
-
@param String $ed 结束日期
-
@param String $downloadFile 保存的zip名称
*/
public function run($appname='',$sd='',$ed='',$downloadFile=''){$package = $appname;
$dim = 'overall,country,language,os_version,device,app_version,carrier';
//$met = 'daily_device_installs,active_device_installs,daily_user_installs,total_user_installs,active_user_installs,daily_device_uninstalls,daily_user_uninstalls,daily_device_upgrades';
$met = "daily_device_installs,current_device_installs,current_user_installs,daily_device_upgrades"; // google modify 2013-08-06// login google play
$this->loginAuth($this->username,$this->password);// download report zip
return $this->downloadReport($package,$sd,$ed,$dim,$met,$this->dev_acc,$downloadFile);
}
/* login google play,create cookies
-
@param String $username
-
@param String $password
-
@return boolean
*/
private function loginAuth($username,$password){// step1
$mainUrl = "https://play.google.com/apps/publish/";$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$mainUrl);
curl_setopt($ch,CURLOPT_COOKIEJAR,GOOGLE_PLAY_COOKIE_FILE);
curl_setopt($ch,CURLOPT_COOKIEFILE,GOOGLE_PLAY_COOKIE_FILE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_exec($ch);
curl_close($ch);// step 2
$serviceLoginUrl = "https://accounts.google.com/ServiceLogin?hl=en&continue=".$mainUrl;
$ch = curl_init();
curl_setopt($ch,$serviceLoginUrl);
curl_setopt($ch,1);
$serviceLoginRespHtml = curl_exec($ch);
curl_close($ch);preg_match('/name="dsh"\sid="dsh"\svalue="(.?)"\s/i',$serviceLoginRespHtml,$matches); // get dsh
$dsh = $matches[1];preg_match('/name="GALX"\svalue="(.?)"\s*/i',$matches); // get GALX
$galx = $matches[1];// step 3
$loginGoogleUrl = "https://accounts.google.com/ServiceLoginAuth";
$postFields = "Referer=".$serviceLoginUrl;
$postFields .= "&AllowAutoRedirect=false";
$postFields .= "&continue=".$mainUrl;
$postFields .= "&dsh=".$dsh;
$postFields .= "&h1=en";
$postFields .= "&GALX=".$galx;
$postFields .= "&Email=".$username;
$postFields .= "&Passwd=".$password;
$postFields .= "&signIn=Sign+in";
$postFields .= "&PersistentCookie=yes";$ch = curl_init();
curl_setopt($ch,$loginGoogleUrl);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postFields);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_exec($ch);
curl_close($ch);// login cookies create success
return true;
}
// download Report zip file
private function downloadReport($package,$dev_acc,$downloadFile) {$fp = fopen($downloadFile,"w");
$ch = curl_init();
curl_setopt($ch,$url);
curl_setopt($ch,1);
curl_setopt($ch,CURLOPT_FILE,$fp);
curl_setopt($ch,GOOGLE_PLAY_COOKIE_FILE);
curl_exec($ch);
curl_close($ch);
fclose($fp);if (file_exists($downloadFile)){
return true;
}
return false;}
/* unzip report
- @param String $path 解压的路径
- @param String $downloadFile zip file
*/
public function unzipReport($path,$downloadFile){
$exec = "unzip ".$downloadFile. " -d ".$path;
shell_exec($exec);
unlink($downloadFile); // delete zip file
}
}
// demo
$username = 'testdev@gmail.com';
$password = 'abcd1234';
$dev_acc = '12345678901234567890';
$appname = 'com.testdev';
$sd = '20130417';
$ed = '20130417';
$downloadFile = 'testdev.zip';
$unzipPath = ROOT_PATH.'/testdev/';
$obj = new AndroidReportDownLoader($username,$password,$dev_acc);
if($obj->run($appname,$downloadFile)){
$obj->unzipReport($unzipPath,$downloadFile);
}
?>
相信本文所述对大家的PHP程序设计有一定的借鉴价值。