Java微信授權登陸的實現示例
前提:
微信公眾平臺:註冊微信認證的公眾號也就是服務號 ,擁有跟高級權限的微信接口。(註冊服務號需要一些企業信息,需自己或者公司解決)
註: 2018年12月起 訂閱號不能認證升級為服務號。但可以將你的訂閱號遷移至另一個公眾號,需300元費用。
準備公眾號的:APPID 與 APPSECRET
二、服務號註冊成功後,如果項目也有服務號的公眾號平臺,跟項目負責人溝通將你個人的微信號添加為服務號的管理
找到左邊導航欄最下面的 基本配置 進去, 記住公眾號的 AppId 與 AppSevrect , 如果AppServret忘記瞭重置重新記住。
配置IP白名單,項目所處的IP配置進去,如拿自己的本機ip用於臨時的配置上去,等項目上線重新配置IP。
然後微信登陸需要微信網頁授權,在公眾中網頁授權需要配置一個域名,準備一個備案的域名,域名備案好大概需要20個工作日,如果沒有可以下載 花生殼軟件 新手註冊 會送一個免費域名 可以用來做測試,如果有備案好的域名當然更好。
沒有備案的域名情況,用花生殼 內網穿透測試
自己註冊 會送個免費的域名 然後花6塊永久的內網穿透體驗版 註冊好後,內網穿透配置
配置好後可以診斷測試,確保配置的端口 在運行中,如果是項目的端口項目要處於運行中狀態,不然會連接失敗
這些都沒問題後回到 在公眾號內的左邊導航找到 公眾號設置 —– 功能設置 — 網頁授權域名 進行域名授權配置。
一、域名授權需要你下載一個文件放置你的域名根目錄下,也就就是你域名訪問的項目的根目錄下,然後在通過瀏覽器 域名/文件名.txt 可以訪問到文件中的內容,這個是重點,一定要可以訪問的到文件內容,然後在去網頁授權域名綁定域名保存就好。配置以後此域名下面的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以進行OAuth2.0鑒權。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com無法進行OAuth2.0鑒權
如果公眾號登錄授權給瞭第三方開發者來進行管理,則不必做任何設置,由第三方代替公眾號實現網頁授權即可
二、記住是域名,不是URL。不需要帶http。
文件放置項目的根目錄或者webapp下,可以通過瀏覽器 域名/文件名.txt 訪問文件內容,也可放置項目的目錄下,訪問時 域名/目錄名/文件名
這裡你可能會遇見配置失敗 報 找不到這個文件或時文件內容不匹配
註意看你是否放置根目錄下,位置沒錯。項目是否有攔截器攔截瞭導致訪問不到該文件
以上都都弄好瞭開始我們重點編碼。
微信授權登陸流程:
登陸授權作用域分為兩種:
一 、靜默登陸 scope參數值為 snsapi_base;隻能獲取到用戶openid。好處是靜默認證,無需用戶手動點擊認證按鈕,感覺上像是直接進入網站一樣。
二、 授權登陸 scope參數值為 snsapi_userinfo;可以獲取到openid、昵稱、頭像、所在地等信息。需要用戶手動點擊認證按鈕
授權登陸步驟:
1、引導用戶進入授權頁面同意授權,獲取code
2、通過code換取網頁授權access_token(與基礎支持中的access_token不同)和openid
3、通過網頁授權access_token和openid獲取用戶基本信息
一、 微信登陸觸發按鈕或圖片鏈接
在首頁準備一個按鈕或者一個鏈接用來發起請求。
這裡我們用一個鏈接做示例
1.通過微信接口獲取code
微信獲取code接口: https://open.weixin.qq.com/connect/oauth2/authorize?
參數下表:
參數 |
是否必須 |
說明 |
appid |
是 |
公眾號的唯一標識 |
redirect_uri |
是 |
授權後重定向的回調鏈接地址,請使用urlencode對鏈接進行處理 |
response_type |
是 |
返回類型,請填寫code |
scope |
是 |
應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,隻能獲取用戶openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性別、所在地。並且,即使在未關註的情況下,隻要用戶授權,也能獲取其信息) |
state |
否 |
重定向後會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節 |
#wechat_redirect |
是 |
無論直接打開還是做頁面302重定向時候,必須帶此參數 |
code作為換取access_token的票據,每次用戶授權帶上的code將不一樣,code隻能使用一次,5分鐘未被使用自動過期。
Controller控制器:
微信用戶授權確認登陸
- 第一步登錄鏈接拼好後,在手機微信中打開,微信便會跳轉到確認授權頁面,點擊確認授權即可。(這一步,不用開發者做處理!)
- 用戶同意授權,頁面將跳轉至 redirect_uri/?code=CODE&state=STATE。
二、獲取 openid
請求與帶攜帶參數
返回的數據字段
代碼
三、獲取用戶信息
請求與參數
返回的JSON數據及字段解釋
代碼:
最後的 回調請求 回授權成功頁面
獲取到用戶信息可進一步進行業務處理,
成功頁面
結果圖
首頁:
用戶授權確定登陸:
授權成功:
詳情也可去看官方文檔:https://mp.weixin.qq.com/wiki?action=doc&id=mp1421140842&t=0.2934098934066318#2
到此這篇關於Java微信授權登陸的實現示例的文章就介紹到這瞭,更多相關Java微信授權登陸內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!