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