微信网页授权真实项目实例
微信網(wǎng)頁授權(quán)獲取用戶OpenID
文章目錄
- 微信網(wǎng)頁授權(quán)獲取用戶OpenID
- :pushpin:微信網(wǎng)頁授權(quán)的前提
- :boom:網(wǎng)頁授權(quán)域名配置
- :boom:前端獲取Code
- 前端拉起微信OAuth2.0授權(quán)
- 解析code
- code 注意事項
- :boom:后端根據(jù)code獲取用戶OpenID
- 通過code換取網(wǎng)頁授權(quán)
- 根據(jù)access_tokena獲取用戶信息
- access_token注意事項
- :boom:詳情以及錯誤信息請查驗微信開發(fā)者文檔-->微信網(wǎng)頁開發(fā)
- :rocket:[傳送門:微信開發(fā)者文檔](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html)
- 📧 通過微信公眾號發(fā)送模板消息
- 發(fā)送模板消息
- 微信公眾號與小程序進行綁定
📌微信網(wǎng)頁授權(quán)的前提
- 通過微信認證的微信號或者申請微信測試號
🚀傳送門:測試號申請 - 必須要有自己的服務器以便和微信后臺交互
- 公眾平臺接口調(diào)用僅支持80端口。(網(wǎng)頁授權(quán)獲取OpenID實測無此限制)
💥網(wǎng)頁授權(quán)域名配置
-操作步驟 :
登錄微信后臺點擊接口權(quán)限網(wǎng)頁授權(quán)修改網(wǎng)頁域名授權(quán)下載配置文件將文件放在綁定域名服務器根目錄
- 點擊保存如果微信后臺沒有報錯說明域名配置成功
💥前端獲取Code
前端拉起微信OAuth2.0授權(quán)
直接看圖:
- 關鍵字段說明
| appid | 微信公眾后臺 | 微信公眾號唯一標示 |
| redirect_uri | 開發(fā)者 | 希望用戶在授權(quán)之后跳轉(zhuǎn)進入的頁面,需要進行encode編碼 |
| response_type | 直接寫code | |
| scope | snsapi_base (不彈出授權(quán)頁面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo (彈出授權(quán)頁面,可通過openid拿到昵稱、性別、所在地。并且, 即使在未關注的情況下,只要用戶授權(quán),也能獲取其信息 ) | |
| state | 開發(fā)者 | 其它網(wǎng)頁需要但微信無法提供的參數(shù),由開發(fā)者自行設置 |
解析code
以微信官方的授權(quán)地址為例:
微信授權(quán)(請在微信環(huán)境打開)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
????????當用戶點擊以上鏈接之后,一旦用戶同意授權(quán)用戶將跳轉(zhuǎn)到redirect_uri指向的地址,即http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php(url經(jīng)過 urlEncode 編碼)這是前端路徑會攜帶code參數(shù),如果設置了state參數(shù)同時還會攜帶state參數(shù)。
????????用戶跳轉(zhuǎn)的地址:http://nba.bluewebgame.com/oauth_response.php?code=Code&state= State
????????此時前端只需要將code參數(shù)從頁面地址中解析出來并傳給后端即可。
code 注意事項
- 同一code只能使用一次,使用后隨即無效
- 同一code只有5分鐘時間,超時需要重新獲取。(即需要用戶再次點擊授權(quán)鏈接)
💥后端根據(jù)code獲取用戶OpenID
通過code換取網(wǎng)頁授權(quán)
????????獲取code后,請求以下鏈接獲取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
- 請求參數(shù)說明
- 返回參數(shù)說明:
至此,已經(jīng)獲取到微信用戶的OpenID了,若需要獲取用戶昵稱和頭像等信息繼續(xù)往下請求
根據(jù)access_tokena獲取用戶信息
????????如果網(wǎng)頁授權(quán)作用域為snsapi_userinfo,則此時開發(fā)者可以通過access_token和openid拉取用戶信息了。請求方法http:GET(請使用https協(xié)議)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
- 請求參數(shù)說明
- 返回參數(shù)說明
至此獲取用戶OpenID和基本信息流程結(jié)束
access_token注意事項
- 獲取的token2小時之內(nèi)有效,過期需要重新獲取
- 微信限制了獲取token的頻次,不允許頻繁獲取,因此開發(fā)者最好將token在后臺緩存起來,待token快過期時再更新token。
💥詳情以及錯誤信息請查驗微信開發(fā)者文檔–>微信網(wǎng)頁開發(fā)
🚀傳送門:微信開發(fā)者文檔
📧 通過微信公眾號發(fā)送模板消息
相信絕大多數(shù)應用獲取微信用戶的openid都是為了通過微信公眾號向用戶發(fā)送模板消息。
發(fā)送模板消息需要注意以下幾點:
- 需要目標用戶已經(jīng)關注了當前公眾號
- 后臺推送模板消息需要在微信公眾號后臺配置ip 白名單,主要是獲取token 是需要白名單校驗
開啟IP白名單的步驟如下:
1、登錄公眾平臺,進入開發(fā)->基本配置頁面
發(fā)送模板消息
- url : https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
- method : post
- post參數(shù)見下方代碼:
- 備注:
- 1.若要實現(xiàn)小程序跳轉(zhuǎn),需要在微信公眾平臺將小程序和微信公眾號進行綁定,否則無法跳轉(zhuǎn)。
- 2.目標小程序必須是已經(jīng)正式上線,不能是開發(fā)版或者是體驗版。
微信公眾號與小程序進行綁定
進入微信公眾號后臺,點擊小程序管理
點擊添加
點擊關聯(lián)小程序
管理員掃碼驗證,輸入小程序APPID搜索到目標小程序,點擊綁定。
總結(jié)
以上是生活随笔為你收集整理的微信网页授权真实项目实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BGA焊接开裂失效分析案例
- 下一篇: Springboot实践心得