許多開發者在開發微信公眾號的時候,都需要取得使用者的頭像,如果是個人的微信帳號,則需要申請「大眾平台測試帳號」來取得微信公眾號所有介面權限;
首先要取得微信傳送過來的access_token,然後根據openid和access_token,來取得微信伺服器傳送過來json格式的使用者訊息,最後用josn_decode來轉換一下就能取得使用者的詳細訊息了;
在寫程式碼之前可以先測試介面運算如下圖:
先進入微信大眾平台,如下圖所示:
點選開發者工具,再點選線上介面偵錯,如下圖所示,進入介面選擇介面
public function getaccss_token(){ $table = 'Access_token'; $useraccess_token = Db::table('Access_token')->select(); $appid = "你的appid"; $appsecret = "你的appsecret"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; //判断是不是第一次获取access_token if(!count($useraccess_token)){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true); $access_token = $jsoninfo["access_token"]; $data=['access_token'=>$access_token,'expires_time'=>($jsoninfo['expires_in']+time()-200)]; Db::table($table)->insert($data); return $access_token; }else if($useraccess_token[0]['expires_time']<time()){//判断是否过期 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true);//转换格式 $access_token = $jsoninfo["access_token"]; $data=['access_token'=>$access_token,'expires_time'=>($jsoninfo['expires_in']+time()-200)]; Db::table($table)->where('expires_time',$useraccess_token[0]['expires_time'])->update($data);//更新数据库; return $access_token; }else{ $access_token = $useraccess_token[0]['access_token']; return $access_token; } }透過curl函數來截獲微信傳送過來的訊息,由於取得到的access_token的有效時間只有7200s也就是兩個小時,所以要每次使用者對公眾號進項操作就要偵測一下是不是過期了,如果過期了就要重新獲取,如上圖的幾個if判斷就是來判斷的,我是將access_token和時間都存到資料庫了,這樣每次就可以拿出來檢測,當然你也可以從緩存呼叫或放到檔案裡從檔案呼叫;取得到access_token後,再透過access_token和openid來取得使用者個人資訊如下圖函數:
public function userinfo($openid){ $access_token = $this->getaccss_token(); //获取用户信息地址 $urlid = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $urlid); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 //curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在 $tmpInfo = curl_exec($curl); //返回api的json对象 //关闭URL请求 curl_close($curl); $userinfo = json_decode($tmpInfo,true); return $userinfo; }也是一樣的透過curl函數相關操作來截獲訊息,轉換格式就可以了,這個最後的userinfo就是使用者的個人資訊數組了,你只需要呼叫就可以了;以上就是透過access_token來取得使用者個人資訊的操作~! 相關推薦:
以上是php微信公眾號開發,取得使用者微信個人資訊的詳細內容。更多資訊請關注PHP中文網其他相關文章!