加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:02:41 所属栏目:PHP教程 来源:网络整理
导读:《PHP实现自动登入google play下载app report的方法》要点: 本文介绍了PHP实现自动登入google play下载app report的方法,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解PHP实现自动登入google play下载app report的办法,有不错的实用价值.分享

《PHP实现自动登入google play下载app report的方法》要点:
本文介绍了PHP实现自动登入google play下载app report的方法,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解PHP实现自动登入google play下载app report的办法,有不错的实用价值.分享给大家供大家参考.具体实现步骤如下:PHP实例

一、流程:PHP实例

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/ServiceLoginAuthPHP实例

2.下载app report zip

3.unzip reportPHP实例

二、实现代码如下:PHP实例

<?php
define('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,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"s*id="dsh"s*value="(.*?)"s*/i',$serviceLoginRespHtml,$matches); // get dsh
    $dsh = $matches[1];
    preg_match('/name="GALX"s*value="(.*?)"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) {
    $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,$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程序设计有一定的借鉴价值.PHP实例

欢迎参与《PHP实现自动登入google play下载app report的方法》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读