作者:heqiuhao | 来源:互联网 | 2023-08-10 18:30
第一步:组装URL请求获取授权码code???1.用户访问一个第三方URL网址,这时第三方服务端收到请求,组装URL,随机生成state并存储(Cookies、Session、My
第一步:组装 URL 请求获取授权码 code
1. 用户访问一个第三方 URL 网址,这时第三方服务端收到请求,组装 URL,随机生成 state 并存储(COOKIEs、Session、Mysql等),然后引导用户请求访问该 URL(自动跳转到该 URL)
2. 用户会被带到开放平台的授权网址页面,用户登录操作后,会跳转到第三方的回调地址,并且 URL 会带上 code 和 state
第二步:通过 code 获取 access_token
1. 第三方服务端获取 code 和 state
2. 第三方服务端验证 state,以确保该请求是第三方服务器自己发起的,防止 csrf 攻击
3. 第三方服务端验证使用 code 加上 AppID、AppSecret 等,通过 API 接口换取 access_token(请求远程 API 获取远程数据)
第三步:通过 access_token 调用接口
1. 第三方服务端获取到 access_token 后,通过 API 接口获取用户个人信息,并完成登录或注册动作,成为第三方用户
以上部分为授权并获取用户信息
接着第三方网站需要通过获取到的用户信息进一步操作(注册或登录)
1. 判断用户是否登录状态,是的话直接绑定用户
2. 非登录状态则查询该用户是否绑定,如果已经绑定则跳转,如果无绑定则忽略
3. 这时判断获取的用户信息组装的用户名是否存在,不存在则直接添加,存在则系统重新组装用户明,然后判断是否用户名是否在线,直到不存在添加用户为止
4. 这时继续判断添加用户的方法执行是否成功,不成功则提示注册失败,成功则拷贝用户头像并更新用户数据,然后执行登录。
1. 什么是授权临时票据(code)?
答:第三方通过 code 进行获取 access_token 的时候需要用到,code 的超时时间一般为几分钟(例如:10 分钟),一个 code 只能成功换取一次 access_token 即失效。code 的临时性和一次保障了授权登录的安全性。第三方可通过使用 https 和 state 参数,进一步加强自身授权登录的安全性。
2. 什么是授权作用域(scope)?
答:授权作用域 scope 代表用户授权给第三方的接口权限,第三方应用需要向开放平台申请使用相应 scope 的权限后,使用文档所述方式让用户进行授权,经过用户授权,获取到相应 access_token 后方可对接口进行调用。
通俗点来说就是,API 接口权限。例如:获取用户个人信息 get_user_info 接口、获取用户粉丝列表 get_fanslist(当然这些要开放平台有这些 API 才行,这里只是举例)
OAuth2 结合网站授权流程分析