平台认证接入 - 简介

1. OAuth2.0

平台认证采用OAuth2.0标准, OAuth 是一个开放授权的标准,允许用户授权第三方网站访问他们存储在平台服务器上的资源,而不需要将自己的用户名和密码提供给第三方网站。

2. 平台 OAuth2.0 接入方法

Step1:申请接入,获取appid和appsecret

申请地址 http://ruc.tiup.cn/open/Apps/myapps

(备注:非学校人员目前不提供申请界面,请联系工作人员获取获取 appidappsecret)

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头部添加appidappsecrect的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"
      }