本文實例講述了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
二、實現代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
<?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 $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 ); } ?> |
相信本文所述對大家的PHP程序設計有一定的借鑒價值。