目錄
QQ登陸
接上篇文章,在跳轉的時候報錯
主要原因是回調地址出錯。
默認的回調地址
實際註冊之後給我們的回調地址是
首先修改本地的訪問地址
修改訪問的地址
之前的分析我們也知道,默認使用的是/auth/qq,所以我們需要自己寫過濾器
上面的知識內部配置,外部的配置也得配置
啓動登陸
查看日誌
爲什麼會跳轉到/sigin呢?我們分析一下它的流程
在OAuth2AuthenticationService類中判斷是否code非空的邏輯:首先當用戶點擊授權碼的時候,跳轉鏈接/qqLogin/callback.do,當掃描驗證完之後,跳轉回來的時候還是/qqLogin/callback.do,第一次跳轉是沒有攜帶code,就會執行if的語句,第二次驗證完畢攜帶有code,就會執行if else裏面的內容
打好斷點,重新啓動
發送了一個post授權請求
獲取到的post請求通過json格式接收,但是返回回來的是text/html
然後就會報異常
返回null
token就會返回一個null
到失敗的處理器裏面
然後就會進入到它的失敗處理器裏面
然後就重定向到/signin,但是由於我們沒有對其授權所以就報錯
在這裏面沒有處理text/html的信息請求,所以我們得自己寫一個RestTemplate
創建QQOAuth2Template,重寫createRestTemplate方法
但是我們可以看到qq返回的並不是json格式,我們還得再進行處理
所以我們需要重寫postForAccessGrant
記得設置爲true,因爲qq授權是需要五個參數的
修改爲自己寫的template
重新啓動,掃描完畢
成功之後就會跳轉到/signup
進入到了SocialAuthenticationProvider
嘗試着通過userid去數據庫獲取用戶信息,因爲是第一次登陸,數據庫裏面沒有數據,所以返回的是null
會報錯異常
處理註冊邏輯,調轉/signup路徑問題
上面問題可知,social將我們導向了一個signup的註冊路徑
接着上面就會拋出異常BadCredentialsException
異常會被SocialAuthenticationFilter處理
跳轉到註冊的url上,也就是/signup路徑上
創建註冊頁
配置註冊頁屬性
上面的配置是屬於框架內部的配置,下面的類似於前後端分離的外部配置,覆蓋內部配置
添加授權
將註冊路徑放入到過濾器中
重新啓動,就會寫到數據庫裏面
第二次登陸就會進入到主頁
上面那個是需要進入到註冊頁面,但是一般情況下是後臺直接幫你註冊,相當於第三方登陸之後直接進入到主頁
我們之前分析了,主要是第一次的時候到數據庫裏面查沒有查到所以就會跳轉到註冊頁面
我們可以看到它在執行查詢
從代碼中我們可以看到,重點connectionSignUp實現時候返回newUserId,所以我們需要手動去添加
啓動