最近在搗鼓微信公共平臺提供的API,等確實一個獲取用戶信息的API,所以沒有辦法,只能自己去獲取,手動填寫當(dāng)然可以解決問題,當(dāng)然編程不就是為了讓生活變的更簡單么?
當(dāng)然,遠(yuǎn)程抓取微信公共平臺數(shù)據(jù)的想法就油然而生,當(dāng)然第一個想到了CURL,CURL可以遠(yuǎn)程提交表達(dá),我感覺微信是提議讓我們怎么的,只要不是惡意刷接口,就不會出現(xiàn)驗證碼.
主要注意的幾個問題:
1.遠(yuǎn)程登錄接口是時候的HTTPS協(xié)議.
2.登錄成功后頁面有跳轉(zhuǎn).
3.返回的HTML頁面是可以直接輸出的.
下面展示了一個CURL的具體寫法,代碼如下:
- //微信遠(yuǎn)程登錄綁定賬號
- public function Curl_login($username,$pwd){
- $config_token = "XiaoDengPHP";
- $pwd = md5($pwd);
- $url = "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
- $postArray = array("username=".$username,"pwd=".$pwd,"imgcode=","f=json");
- $fields = implode("&", $postArray);
- $filedir = $_SERVER['DOCUMENT_ROOT']."/Cookies";
- $cookie_file = $filedir."/cookie.txt";
- $ch = curl_init(); www.111cn.net
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); //表示是https協(xié)議提交
- curl_setopt($ch, CURLOPT_HEADER, 0); //不返回header部分
- curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
- curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //生產(chǎn)Cookies并保存在指定目錄下
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //將curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。
- curl_setopt($ch, CURLOPT_REFERER,"https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN"); //跳轉(zhuǎn)指向
- $result = curl_exec($ch);
- return json_decode($result);
- // 關(guān)閉CURL會話
- curl_close($ch);
- }
上面這個方法就實現(xiàn)了,遠(yuǎn)程登錄微信公共平臺,接下來的事,就是去讓賬號變成開發(fā)者模式,一樣的CURL.
注意這次的curl要帶上cookies而不是生產(chǎn)cookies,重點代碼在于驗證服務(wù)器的相應(yīng),你需要設(shè)置一個服務(wù)器的連接和一個token,代碼如下:
- public function auth($token)
- {
- $data = array(
- $_GET['timestamp'],
- $_GET['nonce'],
- $token);
- $sign = $_GET['signature'];
- sort($data);
- $signature = sha1(implode($data));
- if($signature === $sign){
- echo ($_GET['echostr']);
- exit; //開源代碼Vevb.com
- }else{
- return false;
- }
- }
這樣如果開通成功了,應(yīng)該會返回一個MES=302的json數(shù)據(jù)和一個微信平臺認(rèn)證的token的信息.
只要你細(xì)心,你就會發(fā)現(xiàn),微信連接里面TOKEN是一個動態(tài)變化的,但有是在一段時間內(nèi)不變的,所以你需要這個token來構(gòu)造URL,來獲取其他頁面信息,但開發(fā)現(xiàn)過程中,你一定遇到一個很崩潰的問題.
新聞熱點
疑難解答