• 技术文章 >后端开发 >php教程

    介绍自动登入google play下载app report 的相关内容

    jacklovejacklove2018-06-11 10:30:35原创1267

    流程
    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

    代码如下:

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

    本文讲解了介绍自动登入google play下载app report 的相关内容,更多相关内容请关注php中文网。

    相关推荐:

    关于Apache rewrite 的相关介绍

    关于php click captcha 验证码类的介绍

    如何利用Apache mod_expires 与 mod_headers 实现文件缓存及mod_deflate压缩输出

    以上就是介绍自动登入google play下载app report 的相关内容的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Google Play
    上一篇:通过ThinkPHP简单的实现用账号登陆的功能 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP网站常见一些安全漏洞及防御方法• PHP与C#的值类型指向区别_PHP教程• PHP操作数组的一些函数整理介绍_php技巧• PHP5.0对象模型探索之抽象方法和抽象类_php基础• thinkphp框架下实现登录、注册、找回密码功能_PHP
    1/1

    PHP中文网