PHP实现自动登入googleplay下载appreport的方法
2023-06-13 09:15:46 时间
本文实例讲述了PHP实现自动登入googleplay下载appreport的方法,有不错的实用价值。分享给大家供大家参考。具体实现步骤如下:
一、流程:
1.登入googleplay
登入googleplay需要三步:
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.下载appreportzip
3.unzipreport
二、实现代码如下:
<?php define("ROOT_PATH",dirname(__FILE__)); define("GOOGLE_PLAY_COOKIE_FILE","google_play_cookie.txt"); /** *Logingoogleplay,downloadreport,unzip *Date:2013-04-17 *Author:fdipzone *Version:1.0 */ classAndroidReportDownLoader{ private$username; private$password; private$dev_acc; /*init *@paramString$usernamegoogleplayaccount *@paramString$passwordgoogleplaypassword *@paramString$dev_accgoogleplaydevaccount */ publicfunction__construct($username="",$password="",$dev_acc=""){ $this->username=$username; $this->password=$password; $this->dev_acc=$dev_acc; } /* *@paramString$appname *@paramString$sd开始日期 *@paramString$ed结束日期 *@paramString$downloadFile保存的zip名称 */ publicfunctionrun($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";//googlemodify2013-08-06 //logingoogleplay $this->loginAuth($this->username,$this->password); //downloadreportzip return$this->downloadReport($package,$sd,$ed,$dim,$met,$this->dev_acc,$downloadFile); } /*logingoogleplay,createcookies *@paramString$username *@paramString$password *@returnboolean */ privatefunctionloginAuth($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); //step2 $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);//getdsh $dsh=$matches[1]; preg_match("/name="GALX"\s*value="(.*?)"\s*/i",$serviceLoginRespHtml,$matches);//getGALX $galx=$matches[1]; //step3 $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); //logincookiescreatesuccess returntrue; } //downloadReportzipfile privatefunctiondownloadReport($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)){ returntrue; } returnfalse; } /*unzipreport *@paramString$path解压的路径 *@paramString$downloadFilezipfile */ publicfunctionunzipReport($path,$downloadFile){ $exec="unzip".$downloadFile."-d".$path; shell_exec($exec); unlink($downloadFile);//deletezipfile } } //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=newAndroidReportDownLoader($username,$password,$dev_acc); if($obj->run($appname,$sd,$ed,$downloadFile)){ $obj->unzipReport($unzipPath,$downloadFile); } ?>
相信本文所述对大家的PHP程序设计有一定的借鉴价值。
相关文章
- soapclient php 扩展,PHP扩展—SOAP[通俗易懂]
- PHP-FPM启动报“fpm_unix_conf_wp(), line 124”错误解决方法
- 版本实现Linux安装多个PHP版本的方法(linux安装多个php)
- 测试Linux下PHP应用的实现(linux测试php)
- PHP Fatal error: Uncaught Error: Call to undefined function pcntl_fork().. 开启php pcntl扩展实现多进程详解编程语言
- PHP curl下载图片的方法详解编程语言
- 数据库远程连接MySQL数据库:利用PHP实现简易方法(php远程mysql)
- PHP与MySQL结合使用实现关联查询的方法(php关联mysql查询)
- PHP检测MySQL性能的方法(php检测mysql)
- PHP读取Linux文件的方法(php读取linux文件)
- PHP从Linux中读取文件的方法(php读取linux文件)
- 用PHP访问本地MSSQL数据库的实现方法(php访问本地mssql)
- PHP连接MSSQL实现数据库操作(php用mssql)
- PHP操作Redis队列实现数量控制(redis队列数量php)
- php中iconv函数使用方法
- php获取当前访问的url文件名的方法小结
- 透析PHP的配置文件php.ini
- PHP学习笔记IIS7下安装配置php环境
- php下载excel无法打开的解决方法
- PHP利用header跳转失效的解决方法
- PHP调用MySQL存储过程并返回值的方法
- php读取远程gzip压缩网页的方法
- php实现简单文件下载的方法