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!

推薦閱讀: