zl程序教程

您现在的位置是:首页 >  后端

当前栏目

PHP实现自动登入googleplay下载appreport的方法

PHP方法下载自动 实现 登入
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程序设计有一定的借鉴价值。