接口说明

文档版本:v1.0协议支持:OAuth 2.0 Authorization Code 授权码模式

一、概述

软柠通行证(Rutno ID)为第三方应用提供标准化的 OAuth 2.0 授权登录能力。开发者可通过接入 Rutno ID,快速实现用户授权登录、获取用户基础信息,降低账号体系开发成本。

二、接入准备

2.1 开放平台注册应用

申请入口:https://open.rutno.com前置条件:

  • 已注册并登录软柠账号
  • 账号已完善公司信息

2.2 应用信息填写

创建应用时需提交:

  • 客户端名称
  • 客户端描述
  • 客户端分类
  • 客户端官网
  • 客户端 ICON(正方形,创建后不可修改)
  • 授权回调地址(Redirect URI)
  • ICP 备案号(可选)

2.3 获取应用凭证

应用创建成功后,系统将下发:

  • client_id:应用唯一标识
  • client_secret:应用密钥(严禁泄露、不可明文暴露在前端)

三、授权流程(标准 OAuth 2.0 授权码模式)

重要说明

  • 全程使用 HTTPS
  • 授权码 code 一次性有效,短时有效

四、接口详情

4.1 获取授权码

请求地址plaintext

GET https://id.rutno.com/rn-oauth/authorize

必传参数表格

参数名必选说明
client_id应用 ID
redirect_uri回调地址,必须与平台配置一致
response_type固定值:code
scope权限域,多个用空格分隔
state随机字符串,防 CSRF,建议必传

请求示例plaintext

https://id.rutno.com/rn-oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=https://your-domain.com/callback
&response_type=code
&scope=username email avatar
&state=random_string

成功回调plaintext

https://your-domain.com/callback?code=xxx&state=xxx

4.2 使用 code 换取 AccessToken

请求地址plaintext

POST https://id.rutno.com/rn-oauth/token

请求头plaintext

Content-Type: application/x-www-form-urlencoded

参数表格

参数名必选说明
grant_typeauthorization_code
client_id应用 ID
client_secret应用密钥
code上一步获取的授权码
redirect_uri与第一步一致

成功返回json

{
    "access_token": "AT_xxx",
    "token_type": "Bearer",
    "expires_in": 3600,
    "refresh_token": "RT_xxx",
    "scope": "username email avatar"
}

4.3 获取用户信息

请求地址plaintext

GET / POST https://id.rutno.com/rn-oauth/userinfo

请求头plaintext

Authorization: Bearer YOUR_ACCESS_TOKEN

成功返回json

{
    "sub": "10001",
    "id": "10001",
    "username": "user_demo",
    "nickname": "演示用户",
    "email": "demo@example.com",
    "avatar": "https://id.rutno.com/useravatar/demo.jpg",
    "phone": "13800138000",
    "gender": "1",
    "region": "CN",
    "bio": "Hello World"
}

五、权限域(Scope)说明

支持的 Scope 与用户字段对应:表格

Scope说明
id用户 ID
account_id账户 ID
username用户名
nickname昵称
email邮箱
phone手机
avatar头像
gender性别
birthday生日
region地区
bio个人简介

多个权限使用空格分隔。

六、错误码说明

表格

错误码含义
invalid_clientclient_id /client_secret 错误
invalid_grant授权码无效 / 过期
unauthorized_client应用无权限使用此授权类型
access_denied用户或服务端拒绝授权

错误通常返回 HTTP 400 / 401。

七、安全建议

  1. client_secret 只在后端使用,绝不暴露到前端
  2. state 参数建议每次生成随机值,用于防 CSRF
  3. 回调地址必须在平台白名单中配置
  4. access_token 建议本地加密存储
  5. 授权码 code 只能使用一次