以下都是錯的勉吻,別看了
附上參考地址理解OAuth 2.0
OAUTH邏輯
我的設(shè)計的意圖是,盡可能降低前后端耦合性,所以最終的目的是凶掰,前臺讓用戶點擊登錄按鈕以后,在后臺幾次重定向之后就能直接拿到user_info蜈亩。
QQ授權(quán)登錄獲取Access_Token 文檔
后臺實現(xiàn)步驟(用戶中心處懦窘,第一次授權(quán))
- 用戶點擊登錄按鈕以后,向路由(Auth/login)發(fā)起請求稚配。
- (Auth/login)整合各種參數(shù)以后向https://graph.qq.com/oauth2.0/authorize 發(fā)起請求希望接收Authorization Code畅涂,其中,redirect_uri參數(shù) 要使用用戶中心的地址道川,以作進一步處理午衰。
- 授權(quán)完成后瀏覽器重定向至(Auth/getToken)立宜,此時后臺可以接收到code和state。
整合各種參數(shù)以后向https://graph.qq.com/oauth2.0/token 發(fā)起請求臊岸,記得帶上code參數(shù)(Authorization Code)橙数。這里redirect_uri參數(shù) 選為(Auth/getOpenID)的地址。 - 之后(Auth/getOpenID)可以接收到access_token和expires_in帅戒。為了避免繁瑣的重定向商模,這里通過curl向https://graph.qq.com/oauth2.0/me 發(fā)起請求并接受openID,之后將openID和access_token存入數(shù)據(jù)庫(綁定用戶)蜘澜,最后重定向至用戶中心施流。
前臺請求頭像,用戶名等信息
- 希望獨立出來鄙信,單獨通過訪問路由(Auth/getUserInfo)拉取用戶信息
- (Auth/getUserInfo)根據(jù)數(shù)據(jù)庫內(nèi)部的access_token和openID通過curl向https://graph.qq.com/user/get_user_info發(fā)起請求瞪醋,將數(shù)據(jù)打包后發(fā)給前端。
- 為了避免繁瑣地調(diào)用這個API(貌似有訪問次數(shù)上限装诡?银受?),希望前端做好本地數(shù)據(jù)存儲鸦采。
尚未解決的問題
- 登錄狀態(tài)的判斷
- 已登錄用戶的處理方法
- 多次重定向較為繁瑣