本身查看微信網頁受權wiki: https://mp.weixin.qq.com/wikiphp
第一步:用戶贊成受權,獲取codejson
操做方法:api
新建一個php文件,oauth2.php數組
<?php /*網頁授板獲取用戶openid,首先獲取code*/
echo $code = $_GET['code']; /*測試code是否能輸出而使用echo命令*/ ?>
複製wiki中的示例代碼,並將關鍵字替換:服務器
/*原示例代碼*/ 第一步:用戶贊成受權,獲取code 在確保微信公衆帳號擁有受權做用域(scope參數)的權限的前提下(服務號得到高級接口後,默認擁有scope參數中的snsapi_base和snsapi_userinfo),引導關注者打開以下頁面: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect /*替換以後的代碼*/ 替換appId、redirect_uri(接口配置信息中的URL,要把php替換成 oauth2.php)、scope(等於snsapi_base) https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx**********f&redirect_uri=http://1223.applinzi.com/wx_jiaj.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
經過微信的消息管理,回覆以下消息, 咱們在手機上打開,就會發現手機上顯示一串字母與數字的組合,這個組合就是 code:微信
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx**********f&redirect_uri=http://1223.applinzi.com/wx_jiaj.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
第二步:經過code換取網頁受權access_tokenapp
經過第二步的請求方法中的示例代碼:curl
請求方法 獲取code後,請求如下連接獲取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
//一樣替換掉appid / secret / code
//使用gettoken()從url中獲取token,再使用json_decode()處理返回的數據
/*經過剛剛拿到的code來拿到網頁受權的access_token,替換appid與secret與code='.$code.'*/
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxb0e526a903a99dbf&secret=7cdf863bc791b55714fdfe82f891a50b&code=".$code."&grant_type=authorization_code"; /*獲取token的函數*/
/*gettoken($url);*/
/*經過json處理一下返回的數據,把下面的數據輸出測試一下,給個變量,最後輸出時把這個$openArr的數組賦值給一個屬性openid*/
$openArr=json_decode(gettoken($url),true); echo $openArr['openid'];
重上新傳至服務器,並從新在手機上點擊剛纔發的連接地址,這會拿到的一串數字與字母的組合,就是openid。函數
以snsapi_base爲scope發起的網頁受權,只能獲取進入頁面的用戶的openid;
以snsapi_userinfo爲scope發起的網頁受權,能夠獲取用戶的基本信息;
上面的代碼只是獲取openid的,要獲取用記的基本信息的話,其它地方都是同樣的,惟一的區別是發給手機的那個url,把scope的snsapi_base替換爲snsapi_userinfo就能拿到用戶的基本信息
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx*************&redirect_uri=http://1223.applinzi.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
在手機上打開上面的地址,會在微信上彈出一個確認登陸的網頁:測試
點擊確認登陸以後會彈出下面的頁面
確認登陸就能夠拿到用戶的信息,若是想在手機上看到底能夠拿到用戶的什麼信息時,把代碼改一下,由原來的 echo $openArr['openid'] 輸出到openid 改成 輸出一個數組 print_r($openArr) ,再上傳代碼,刷新網頁看一下效果,先把完整的拿到用戶信息的代碼放上來:
<?php /*網頁授板獲取用戶openid,首先獲取code*/
echo $code = $_GET['code']; /*經過剛剛拿到的code來拿到網頁受權的access_token,替換appid與secret與code='.$code.'*/
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx****************&code=".$code."&grant_type=authorization_code"; /*獲取token的函數*/
/*gettoken($url);*/
/*經過json處理一下返回的數據,把下面的數據輸出測試一下,給個變量,最後輸出時把這個$openArr的數組賦值給一個屬性openid*/
$openArr=json_decode(gettoken($url),true); // echo $openArr['openid'];
/*能夠使用print_r輸出下這個數組*/
print_r($openArr); function gettoken($url){ /*若是用curl請求網頁,多方網頁使用了gzip壓縮,那麼獲取的內容將有可能爲亂碼的解決辦法*/
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"); curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output = curl_exec($ch); curl_close($ch); return $output; } ?>
傳代碼至服務器,再次打開手機上的連接地址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx*************&redirect_uri=http://1223.applinzi.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
就會看到一個帶openid的數組,包含用戶的信息:
!!!!!由於code只能和一次且不能刷新,若是報」40029」錯誤的話,說明當前code無效,你須要等幾分鐘,再次點擊連接,才能打開帶openid的數組。
第四步:拉取用戶信息(需scope爲 snsapi_userinfo)
若是網頁受權做用域爲snsapi_userinfo,則此時開發者能夠經過access_token和openid拉取用戶信息了。從上面的圖片中能夠看到當前的網頁的做用域爲snsapi_userinfo,下一步,拉取用戶的信息。
以上爲微信網頁受權方法,歡迎討論。