平台认证接入 - 简介
1. OAuth2.0
平台认证采用OAuth2.0标准, OAuth 是一个开放授权的标准,允许用户授权第三方网站访问他们存储在平台服务器上的资源,而不需要将自己的用户名和密码提供给第三方网站。
2. 平台 OAuth2.0 接入方法
Step1:申请接入,获取appid和appsecret
申请地址 http://ruc.tiup.cn/open/Apps/myapps
(备注:非学校人员目前不提供申请界面,请联系工作人员获取获取 appid 和 appsecret)
appid 与 appsecret 是App应用的唯一凭证,请妥善保管。
Step2:开发您的验证回调接口(redirect_uri)
回调接口,将用于接收平台Oauth的 Authraztion Code,并根据业务应用需要,处理验证完成后的逻辑。
Step3:放置平台登录按钮
该登录按钮,将指向平台 Oauth2.0 的验证入口,用户第一次登录会进行授权,授权后,不再重复授权。
- URL:
https://open.tiup.cn/o/oauth2/authorize
- Method:
GET
Request
Params
参数 是否必须 含义 school_code 必须 学校接入时申请的编码:"ruc" theme 必须 接入类型, 固定值: "schools" response_type 必须 授权类型,此值固定为"code"。 client_id 必须 申请TIUP登录成功后,分配给应用的appid。 redirect_uri 必须 成功授权后的回调地址,用于接收TiUP返回参数。**必须是Step2中提供的注册回调地址。** state 可选 Client端的状态值。由client定义和维护 scope 必须 固定值 "userinfo"
例如一个最简单的登录按钮如下:
<button href="https://open.tiup.cn/o/oauth2/authorize?client_id=tcs-0.apps.tiup.cn&redirect_uri=https://sample.com/oauth2/callback&response_type=code&scope=userinfo&state=state"></button>
Step4:获取授权码(Authorization Code)
用户点击登录按钮,并授权后。平台平台将向应用服务器的redirect_uri接口,发起一次请求。
redirect_uri将接收如下参数:
- code 表示授权码(Authorization Code),必选项。该码的有效期应该很短,通常设为10分钟,应用服务器只能使用该码一次,否则会被授权服务器拒绝。该码与应用服务器ID和重定向URI,是一一对应关系。
- state 如果应用服务器的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。
例如:
`https://sample.com/oauth2/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz
如果中途发生错误则返回:
https://sample.com/oauth2/callback?error=error_msg&error_description=something_is_error
Step5:通过授权码换取Access Token
应用服务器获取Authorization Code之后,需要向平台平台发起一次请求,获取用户个人Access Token。
请求时需要在HTTP头部添加appid和appsecrect的basic auth.
- URL:
https://open.tiup.cn/o/oauth2/token
- Method:
GET
Request
Headers
Authorization: Basic {base64(client_id:client_secret)}
Request
Params
参数 是否必须 含义 grant_type 必须 授权类型,此值固定为"authorization_code"。 code 必须 表示上一步获得的授权码(Authorization Code) school_code 必须 学校接入时申请的编码:例如: "ruc" 等 theme 必须 接入类型, 固定值: "schools"
返回说明
成功:
{ "access_token": "*******" "expires_in": 18000 "refresh_token": "*******" "scope": "all" "token_type": "Bearer" "uid": "****" }
失败:
{ "error": "{error}" "error_description": "{error_description}" }
Step6:通过Access Token 获取用户基本信息, 并创建或关联您的现有用户
获取用户基本信息是在请求头部添加Authorization的值为Bearer
+ 获取的access_token
通过access_token可以调用平台授权给应用的任何接口,获取用户信息,请妥善保管,不要暴露在外面。
- URL:
https://tiupapis.cn/oauth2/v1/userinfo
- Method:
GET
Request
Headers
Authorization: Bearer {your_access_token}
Response Success 200
Body
{ "uid": "132134", "name": "用户姓名", "avatar": "http://tup.cn/xxx/xxx/xx.jpg", "profiles": [ { 'sid': "学号", ... }, ... ] }
Response Error (400,401,402, 500...)
Body
{ "code": [error code], "msg": "error message" }