微信公眾號 微信網頁授權方法


自己查看微信網頁授權wiki:    https://mp.weixin.qq.com/wiki

第一步:用戶同意授權,獲取code

操作方法:

新建一個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_token

通過第二步的請求方法中的示例代碼:

請求方法 獲取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,下一步,拉取用戶的信息。

 

以上為微信網頁授權方法,歡迎討論。

 




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM