首页 >后端开发 >php教程 >自动登入google play下载app report

自动登入google play下载app report

黄舟
黄舟原创
2017-02-18 09:42:542683浏览

流程
1.登入google play

登入google play需要三步
http://www.php.cn/
http://www.php.cn/://play.google.com/apps/publish/
http://www.php.cn/

2.下载app report zip
3.unzip report


代码如下:

<?php
define(&#39;ROOT_PATH&#39;, dirname(__FILE__));
define(&#39;GOOGLE_PLAY_COOKIE_FILE&#39;, &#39;google_play_cookie.txt&#39;);

/**
* 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=&#39;&#39;, $password=&#39;&#39;, $dev_acc=&#39;&#39;){
        $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=&#39;&#39;, $sd=&#39;&#39;, $ed=&#39;&#39;, $downloadFile=&#39;&#39;){
        
        $package = $appname;
        $dim = &#39;overall,country,language,os_version,device,app_version,carrier&#39;;
        //$met = &#39;daily_device_installs,active_device_installs,daily_user_installs,total_user_installs,active_user_installs,daily_device_uninstalls,
        daily_user_uninstalls,daily_device_upgrades&#39;;
        $met = "daily_device_installs,current_device_installs,daily_user_installs,total_user_installs,current_user_installs,daily_device_uninstalls,
        daily_user_uninstalls,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, CURLOPT_URL, $serviceLoginUrl);
        curl_setopt($ch, CURLOPT_COOKIEJAR, GOOGLE_PLAY_COOKIE_FILE);
        curl_setopt($ch, CURLOPT_COOKIEFILE, GOOGLE_PLAY_COOKIE_FILE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $serviceLoginRespHtml = curl_exec($ch);
        curl_close($ch);

        preg_match(&#39;/name="dsh"\s*id="dsh"\s*value="(.*?)"\s*/i&#39;, $serviceLoginRespHtml, $matches); // get dsh
        $dsh = $matches[1];

        preg_match(&#39;/name="GALX"\s*value="(.*?)"\s*/i&#39;, $serviceLoginRespHtml, $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, CURLOPT_URL, $loginGoogleUrl);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
        curl_setopt($ch, CURLOPT_COOKIEJAR, GOOGLE_PLAY_COOKIE_FILE);
        curl_setopt($ch, CURLOPT_COOKIEFILE, GOOGLE_PLAY_COOKIE_FILE); 
        curl_setopt($ch, CURLOPT_HEADER, true); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_exec($ch);
        curl_close($ch);

        // login cookies create success
        return true;
    
    }


    // download Report zip file
    private function downloadReport($package, $sd, $ed, $dim, $met, $dev_acc, $downloadFile) {

        $url = "https://play.google.com/apps/publish/statistics/download?package={$package}&sd={$sd}&ed={$ed}&dim={$dim}&met={$met}&dev_acc={$dev_acc}";
        
        $fp = fopen($downloadFile,"w");

        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_COOKIEFILE, 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 = &#39;testdev@gmail.com&#39;;
$password = &#39;abcd1234&#39;;
$dev_acc = &#39;12345678901234567890&#39;;

$appname = &#39;com.testdev&#39;;
$sd = &#39;20130417&#39;;
$ed = &#39;20130417&#39;;
$downloadFile = &#39;testdev.zip&#39;;
$unzipPath = ROOT_PATH.&#39;/testdev/&#39;;

$obj = new AndroidReportDownLoader($username, $password, $dev_acc);
if($obj->run($appname, $sd, $ed, $downloadFile)){
    $obj->unzipReport($unzipPath, $downloadFile);
}

?>


 以上就是自动登入google play下载app report的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn