用戶通過掃描網頁提供的二維碼實現登陸信息獲取,大家參考使用吧
請先下載 snoopy 類 代碼如下: <?php /** * 微信公眾平台PHP-SDK * Wechatauth為非官方微信登陸API * 用戶通過掃描網頁提供的二維碼實現登陸信息獲取 * 主要實現如下功能: * get_login_code() 獲取登陸授權碼, 通過授權碼才能獲取二維碼 * get_code_image($code='') 將上面獲取的授權碼轉換為圖片二維碼 * verify_code() 鑒定是否登陸成功,返回200為最終授權成功. * get_login_cookie() 鑒定成功後調用此方法即可獲取用戶基本信息 * sendNews($account,$title,$summary,$content,$pic,$srcurl='') 向一個微信賬戶發送圖文信息 * get_avatar($url) 獲取用戶頭像圖片數據 * @author dodge <[email protected]> * @link https://github.com/dodgepudding/wechat-php-sdk * @version 1.1 * */ include "snoopy.class.php"; class Wechatauth { private $cookie; private $_cookiename; private $_cookieexpired = 3600; private $_account = 'test'; private $_datapath = './data/cookie_'; private $debug; private $_logcallback; public $login_user; //當前登陸用戶, 調用get_login_info後獲取 public function __construct($options) { $this->_account = isset($options['account'])?$options['account']:''; $this->_datapath = isset($options['datapath'])?$options['datapath']:$this->_datapath; $this->debug = isset($options['debug'])?$options['debug']:false; $this->_logcallback = isset($options['logcallback'])?$options['logcallback']:false; $this->_cookiename = $this->_datapath.$this->_account; $this->getCookie($this->_cookiename); } /** * 把cookie寫入緩存 * @param string $filename 緩存文件名 * @param string $content 文件內容 * @return bool */ public function saveCookie($filename,$content){ return file_put_contents($filename,$content); } /** * 讀取cookie緩存內容 * @param string $filename 緩存文件名 * @return string cookie */ public function getCookie($filename){ if (file_exists($filename)) { $mtime = filemtime($filename); if ($mtime<time()-$this->_cookieexpired) return false; $data = file_get_contents($filename); if ($data) $this->cookie = $data; } return $this->cookie; } /* * 刪除cookie */ public function deleteCookie($filename) { $this->cookie = ''; @unlink($filename); return true; } private function log($log){ if ($this->debug && function_exists($this->_logcallback)) { if (is_array($log)) $log = print_r($log,true); return call_user_func($this->_logcallback,$log); } } /** * 獲取登陸二維碼對應的授權碼 */ public function get_login_code(){ if ($this->_logincode) return $this->_logincode; $t = time().strval(mt_rand(100,999)); $codeurl = 'https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_='.$t; $send_snoopy = new Snoopy; $send_snoopy->fetch($codeurl); $result = $send_snoopy->results; if ($result) { preg_match("/window.QRLogin.uuids+=s+"([^"]+)"/",$result,$matches); if(count($matches)>1) { $this->_logincode = $matches[1]; $_SESSION['login_step'] = 0; return $this->_logincode; } } return $result; } /** * 通過授權碼獲取對應的二維碼圖片地址 * @param string $code * @return string image url */ public function get_code_image($code=''){ if ($code=='') $code = $this->_logincode; if (!$code) return false; return 'http://login.weixin.qq.com/qrcode/'.$this->_logincode.'?t=webwx'; } /** * 設置二維碼對應的授權碼 * @param string $code * @return class $this */ pub