PHP实现自动登入google play下载app report的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-14 11:17:17 浏览: 评论:0
这篇文章主要介绍了PHP实现自动登入google play下载app report的方法,较为详细的讲述了登陆下载APP及对应的实现代码,具有不错的实用价值,需要的朋友可以参考下
本文实例讲述了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
二、实现代码如下:
- <?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';
- //www.phpfensi.com
- $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程序设计有一定的借鉴价值。
Tags: PHP自动登入google
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)