应用注册

先到/res/clients.html注册应用。

利用BBS账户登录之后,点击Register new client,填写各项信息。

  • client_id: 应用标识
  • client_secret: 用于验证应用(RFC6749 $2.3.1)
  • redirect uri: OAuth的重定向路径(RFC6749 $3.1.2)
  • name: 应用名字
  • description: 应用说明
  • logo: 图标
  • website: 网站
  • type: 能保证应用自身安全性的选confidential,一般选public(RFC6749 $2.1)
  • response type: (RFC6749 $3.1.1)
    • 希望用authentication code模式的选code(RFC6749 $4.1)
    • 希望用直接跳转给token模式的选token(RFC6749 $4.2)
  • grant type:
    • 希望用authentication code模式的选authentication code(RFC6749 $4.1)
    • 希望用密码登录的选password(RFC6749 $4.3, 目前禁止)
    • 希望直接靠应用确认身份的选client credentials(RFC6749 $4.4, 目前禁止)
    • 希望获取和使用refresh token的选refresh token(RFC6749 $6)

注册完成之后就可以作为这个应用登录了。也可以在此页面修改/删除应用信息。

登录

显示验证页面

GET /auth/auth
Parameter Type Description Optional Choices
redirect_uri string Redirection URI No displaycode
response_type string Preferred response type No code/token
client_id string Client ID of the client application No
state string Client state string Yes
  • 如果选token模式,会直接在登录成功之后重定向到$redirect_uri?access_token=<string: token>&token_type=<string: token type>&expires_in=<int: time before token expires>[&state=<string: client state>]
  • 如果选code模式,会跳转到$redirect_uri?code=<string: authorization code>[&state=<string: client state>],需要再进行下一步获取token。
  • state 用于传递客户端信息。服务器会把客户端传过来的 state 原样加到重定向的参数里去。

获取Token

GET/POST /auth/token
Parameter Type Description Optional Choices
redirect_uri string Redirection URI, should match with previous requests No
grant_type string Type of object to exchange token with No authorization_code/refresh_token
code string Authorization code, required for grant_type = authorization_code Yes
refresh_token string Refresh token, required for grant_type = refresh_token Yes
client_id string Client ID of the client application No
client_secret string Client secret of the client application No
  • Return value
    • Success: {"access_token": <string: Token>, "token_type": <string: Token type>, ["refresh_token": <string: Refresh Token>,] "expires_in": <int: Seconds before expire> }
    • Failure: various HTTP error code
  • refresh_token may be used to exchange for a new access_token and a new refresh_token, it will be disabled after the exchange
  • refresh_token可换取新access_token和refresh_token,换取后原refresh_token失效