1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP实现自动登入google play下载app report的方法

作者:用户 来源:互联网 时间:2017-12-01 14:40:51

方法

PHP实现自动登入google play下载app report的方法 - 摘要: 本文讲的是PHP实现自动登入google play下载app report的方法,本文实例讲述了PHP实现自动登入google play下载app report的方法,有不错的实用价值。分享给大家供大家参考。具体实现步骤如下:一、流程:1.登入google play登入google play需要三步: https://p

本文实例讲述了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 = '[email protected]';$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程序设计有一定的借鉴价值。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索方法 ,以便于您获取更多的相关知识。