客户端
客户端是外部应用用来让成员登录 Soln 的 OAuth 客户端。每个客户端记录应用类型、回调地址和允许的权限范围。
打开 账户中心,进入 客户端。
开始之前
- 应用开发者需要你提供三样东西:客户端 ID、客户端密钥,以及需要他们登记的回调地址
- 创建客户端前先问清应用类型(Web / 桌面 / Android / iOS),因为类型创建后不可修改
应用侧要用的端点
| 用途 | 端点 |
|---|---|
| 发现文档 | <平台地址>/.well-known/openid-configuration |
| 授权(浏览器跳转) | <平台地址>/oauth/authorize |
| 换取令牌 | <平台地址>/oauth/token |
| 成员资料 | <平台地址>/oauth/userinfo |
<平台地址> 就是成员登录 Soln 使用的地址。应用可以读取发现文档拿到准确的端点,不必把路径写死。
默认值
| 字段 | 默认值 |
|---|---|
| 应用类型 | Web 应用 |
| 允许的权限范围 | openid、profile、email,默认全选 |
| 回调地址 | 空;必填,且每行一个地址 |
接入一个外部应用
- 先准备应用侧:需要 Soln 生成的客户端 ID 和客户端密钥,以及应用要回调的地址
- 在 Soln 点击左侧菜单 客户端 右侧的 + 新建客户端
- 填写客户端名称并选择应用类型。应用类型决定需要填哪些回调地址和平台字段,创建后不可修改
- 按类型填写平台字段:Android 填软件包名称和 SHA-256 证书指纹;iOS 填 Bundle ID 和 10 位 Apple Team ID
- 选择允许的权限范围。
openid、profile、email默认全选,分别对应确认身份、基础资料和邮箱地址 - 按该类型的规则填写应用的回调地址,每行一个
- 保存客户端后,立即把弹窗里的 客户端密钥 复制下来,和客户端 ID 一起保存到应用服务端
- 从应用发起一次授权,再到 用户授权情况 确认成员授予的范围是否符合预期
验证一次接入
- 把客户端 ID、客户端密钥和登记好的回调地址配置到应用服务端
- 从应用发起一次授权,用成员账号登录
- 在 Soln 授权页确认授予的权限范围
- 回到 用户授权情况:记录会出现,状态为 已授权,并带成员实际授予的范围
轮换客户端密钥
- 在客户端列表对机密客户端点击 轮换密钥
- 从弹窗复制新密钥,更新到应用服务端;旧值保留到应用完成发布为止
- 公共客户端没有密钥,该操作对它不可用
常见问题
| 现象 | 检查方向 |
|---|---|
redirect_uri 被拒绝 | 应用发送的回调地址必须与登记的地址完全一致;Android 还要确认 App Link 域名已把 /.well-known/assetlinks.json 路由到 Soln,且包名与指纹匹配 |
| 提示客户端无效 | 客户端 ID 或客户端密钥不正确;轮换密钥后要同步更新应用服务端 |
| 申请的权限范围未获授权 | 申请的每个范围都必须在客户端的"允许的权限范围"里 |
| 应用类型填错了 | 类型不可修改,需要用正确的类型新建客户端 |
| 轮换密钥后应用不可用 | 把弹窗里的新密钥更新到应用服务端;弹窗只显示一次 |
客户端列表
| 列 | 说明 |
|---|---|
| 客户端名称 | 客户端显示名称 |
| 应用类型 | Web 应用、桌面应用、Android 或 iOS |
| 客户端 ID | 应用在授权时携带的标识 |
| 创建时间 | 客户端创建时间 |
搜索会匹配客户端名称、客户端 ID 和应用类型,客户端 ID 可以直接从列表复制。
行操作包括 编辑、轮换密钥 和 删除。轮换密钥 只对机密客户端可用,公共客户端没有密钥;删除客户端会先二次确认,删除后它的已有授权会立即停止工作。
新建或编辑客户端
| 字段 | 说明 |
|---|---|
| 客户端名称 | 必填,最多 200 个字符 |
| 应用类型 | 必填:Web 应用、桌面应用、Android 或 iOS;决定需要填写哪些回调地址,创建后不可修改 |
| Android 软件包名称 | Android 必填,最多 255 个字符,例如 com.example.app |
| SHA-256 证书指纹 | Android 必填,每行一个签名证书的 SHA-256 指纹 |
| iOS Bundle ID | iOS 必填,最多 255 个字符,例如 com.example.app |
| Apple Team ID | iOS 必填,Apple Developer 账号的 10 位 Team ID,例如 A1B2C3D4E5 |
| 允许的权限范围 | 必填;可选范围为 openid、profile、email,新建时默认全选 |
| 回调地址 | 必填,每行填写一个地址 |
回调地址按应用类型填写:
| 类型 | 必填地址 |
|---|---|
| Web 应用 | 一个或多个完整且精确的公开 HTTPS 回调地址 |
| 桌面应用 | 一个或多个本机回环地址,例如 http://127.0.0.1/oauth/callback;授权时允许使用动态端口 |
| Android | 软件包名称、SHA-256 证书指纹,以及公开 HTTPS App Link;对应域名必须把 /.well-known/assetlinks.json 路由到 Soln,Android 才能校验软件包和签名证书 |
| iOS | Bundle ID、Apple Developer 账号的 10 位 Team ID,以及公开 HTTPS 回调地址或使用 Bundle ID 作为 Scheme 的地址 |
至少需要填写一个回调地址。
客户端密钥
新建客户端或轮换密钥会弹出一个弹窗,密钥以只读输入框展示并带复制按钮。密钥只显示一次:请立即复制并保存到应用服务端;轮换后需要同步更新应用配置,因为关闭弹窗后不会再次显示。