OAuth2.0授权原理及开发流程详解
OAuth2.0在认证和授权的过程中参与的几个角色如下:
Client - 第三方应用,
下面以小明使用qq登陆本站为例来讲解OAuth2.0授权原理(小明为Resource Owner,本站36nu.com为Client,qq授权服务器为Authorization Server,提供小明qq基本信息的服务器为Resource Server)
1 小明点击使用qq登陆本站,本站请求qq的OAuth登录页
请求的接口大致如下
https://graph.qq.com/oauth/...&client_id=100490398&redirect_uri=xxx
这个URL称为Request Token URL - 未授权的令牌请求服务地址,要带两个参数client_id和redirect_uri,client_id是在qq互联申请的appid,redirect_uri是用户账号密码输入正确后跳转到的地址。本站身份验证通过后,跳转到qq登陆页面
2 小明使用qq号登陆并授权
小明登陆成功后,QQ在回调地址中加入了一个code参数给本站,例如:
/callback?code=xxxxxx
此code即Authorization Code,有效期一般很短
3 本站通过Authorization Code获取Access Token
本站使用上一步返回的code及appid和appkey去qq获取Access Token,接口地址例如:
https://graph.qq.com/oauth2.0/token?&client_id=100490398&client_secret=xxx&code=xxx
这个URL称为User Authorization URL - 用户授权的令牌请求服务地址,client_id即appid,client_secret即appkey,code为上一步得到的code,这个接口调用成功后会返回access_token和refresh_token,access_token的是有有效期的,过期后需要用户重新授权才能获得新的Access_Token。为避免用户再次授权的操作,提升用户体验,可以使用refresh_token重新获取有效的access_token
4 使用access_token获取小明的头像,区域,性别等基本信息
使用access_token去请求qq的相关openApi(Resource Server)即可获取到需要的信息