Heim  >  Artikel  >  Backend-Entwicklung  >  Melden Sie sich automatisch bei Google Play an, um den App-Bericht herunterzuladen

Melden Sie sich automatisch bei Google Play an, um den App-Bericht herunterzuladen

黄舟
黄舟Original
2017-02-18 09:42:542633Durchsuche

Vorgang
1. Melden Sie sich bei Google Play an

Die Anmeldung bei Google Play dauert drei Schritte
http://www .php.cn/
http://www.php.cn/://play.google.com/apps/publish/
http://www.php.cn/

2. App-Bericht-ZIP herunterladen
3. Bericht entpacken


Der Code ist wie folgt folgt:

<?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);
}

?>


Das Obige ist der Inhalt des Berichts zur automatischen Anmeldung bei der Google Play-Download-App. Weitere verwandte Inhalte finden Sie hier. Bitte beachten Sie die chinesische PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn