第一步:组装 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 才行,这里只是举例)sql