PHP實現自動登入google play下載app report的方法_php技巧

來源:互聯網
上載者:User

本文執行個體講述了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

二、實現代碼如下:

<?phpdefine('ROOT_PATH', dirname(__FILE__));define('GOOGLE_PLAY_COOKIE_FILE', 'google_play_cookie.txt');/*** 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,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('/name="dsh"\s*id="dsh"\s*value="(.*?)"\s*/i', $serviceLoginRespHtml, $matches); // get dsh    $dsh = $matches[1];    preg_match('/name="GALX"\s*value="(.*?)"\s*/i', $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 = '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, $sd, $ed, $downloadFile)){  $obj->unzipReport($unzipPath, $downloadFile);}?>

相信本文所述對大家的PHP程式設計有一定的借鑒價值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.