首頁  >  文章  >  後端開發  >  php微信公眾號開發,取得使用者微信個人資訊

php微信公眾號開發,取得使用者微信個人資訊

不言
不言原創
2018-04-19 14:35:569212瀏覽


        許多開發者在開發微信公眾號的時候,都需要取得使用者的頭像,如果是個人的微信帳號,則需要申請「大眾平台測試帳號」來取得微信公眾號所有介面權限;

        首先要取得微信傳送過來的access_token,然後根據openid和access_token,來取得微信伺服器傳送過來json格式的使用者訊息,最後用josn_decode來轉換一下就能取得使用者的詳細訊息了;

        在寫程式碼之前可以先測試介面運算如下圖:

先進入微信大眾平台,如下圖所示:


點選開發者工具,再點選線上介面偵錯,如下圖所示,進入介面選擇介面


##點擊後來進入下圖頁面在介面類型中選擇:使用者管理,在介面清單中選擇:取得使用者節本資訊介面/user/info;

然後檢視微信開發文檔,取得access_token 要使用到appid和appsecret如下圖


appsecret點擊啟用後獲取,然後在瀏覽器網址中輸入:

https://api.weixin. qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret" 網址,其中$appid就是上圖中的appid字串,$appsecret就是你的開發者密碼,用字串替換掉兩個變數後(注意去掉引號)點擊enter鍵就能獲取微信伺服器發送過來的access_token 和expires_in兩個數據,將獲取到的access_token字符串複製到接口調試頁面,openid是測試帳號關注平台後唯一的id是加密過的,取得方法請見前面文章,或百度也可以,將兩個參數輸入到介面頁面中對應的輸入框內(輸入完成後會顯示綠色的通過驗證字樣),然後點選偵測問題即可;


取得到的資訊如下圖:


#這表示你成功取得到了,下面我們上程式碼來取得access_token 和個人資訊;

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][&#39;expires_time&#39;]<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=[&#39;access_token&#39;=>$access_token,&#39;expires_time&#39;=>($jsoninfo[&#39;expires_in&#39;]+time()-200)];
			Db::table($table)->where(&#39;expires_time&#39;,$useraccess_token[0][&#39;expires_time&#39;])->update($data);//更新数据库;
			return $access_token;
	}else{	
		$access_token = $useraccess_token[0][&#39;access_token&#39;];
		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 = &#39;https://api.weixin.qq.com/cgi-bin/user/info?access_token=&#39;.$access_token.&#39;&openid=&#39;.$openid.&#39;&lang=zh_CN&#39;;
		$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微信公眾號開發,取得使用者微信個人資訊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn