以下都是错的,别看了
附上参考地址理解OAuth 2.0
OAUTH逻辑
我的设计的意图是,尽可能降低前后端耦合性,所以最终的目的是,前台让用户点击登录按钮以后,在后台几次重定向之后就能直接拿到user_info。
QQ授权登录获取Access_Token 文档
后台实现步骤(用户中心处,第一次授权)
- 用户点击登录按钮以后,向路由(Auth/login)发起请求。
- (Auth/login)整合各种参数以后向https://graph.qq.com/oauth2.0/authorize 发起请求希望接收Authorization Code,其中,redirect_uri参数 要使用用户中心的地址,以作进一步处理。
- 授权完成后浏览器重定向至(Auth/getToken),此时后台可以接收到code和state。
整合各种参数以后向https://graph.qq.com/oauth2.0/token 发起请求,记得带上code参数(Authorization Code)。这里redirect_uri参数 选为(Auth/getOpenID)的地址。 - 之后(Auth/getOpenID)可以接收到access_token和expires_in。为了避免繁琐的重定向,这里通过curl向https://graph.qq.com/oauth2.0/me 发起请求并接受openID,之后将openID和access_token存入数据库(绑定用户),最后重定向至用户中心。
前台请求头像,用户名等信息
- 希望独立出来,单独通过访问路由(Auth/getUserInfo)拉取用户信息
- (Auth/getUserInfo)根据数据库内部的access_token和openID通过curl向https://graph.qq.com/user/get_user_info发起请求,将数据打包后发给前端。
- 为了避免繁琐地调用这个API(貌似有访问次数上限??),希望前端做好本地数据存储。
尚未解决的问题
- 登录状态的判断
- 已登录用户的处理方法
- 多次重定向较为繁琐
网友评论