
什么是 OAuth
HamCQ 社区提供了 OAuth 的授权登录方式,可以让用户从 HamCQ 打开的网页获取成员的身份信息,从而免去登录的环节。
OAuth2 的设计背景,在于允许用户在不告知第三方自己的账号密码情况下,通过授权方式,让第三方服务可以获取自己的资源信息。
为什么要提供 OAuth
得益于社区的发展,越来越多的用户在社区讨论、换卡、认证,我们常用的 QQ、微信、淘宝也都为第三方应用提供了 OAuth 授权登录能力,这是一个开放的标准,是目前最流行的授权机制。
提供 OAtuth 将会主要有以下好处:
- 节约第三方开发者时间,免去注册流程,快速实现业务逻辑。
- 充分发挥社区职责,创造更多有意思的功能。
为了规范流程,保障用户合法权益,目前社区 OAuth 仅提供网站接入、仅提供authorization_code、仅允许显示授权。
如何申请
HamCQ 社区 OAuth2.0 总体处理流程如下:
Step1:申请接入,获取 client_id 和 client_secret;
Step2:开发应用,并设置协作者账号进行测试联调;
Step3:放置 HamCQ社区 登录按钮;
Step4:通过用户登录验证和授权,获取Access Token;
Step5:通过 Access Token 获取用户的 ID;
Step6:调用 OpenAPI,来请求访问用户授权的资源。
发送以下信息至 emin@hamcq.cn ,我们将对开发者信息、站点情况进行审核:
1、站点名称
2、站点首页链接
3、申请业务场景(不少于 50 字介绍)
4、站点 Logo (不少于 64x64 PX)
5、站点介绍(10 字内)
6、域名回调地址(严格匹配)
7、域名 ICP 备案信息、公安备案信息
8、网站负责人信息(姓名、手机号、身份证号码)
审核通过后,将会随邮件一起发送具体信息。
接口
授权
/oauth/authorize
示例:
GET https://example.com/oauth/authorize?client_id=123456&response_type=code&redirect_uri=https://user.example.com/oauth/callback&scope=user.read&state=123456
令牌
/oauth/token
参数 | 说明 | 必填 | 默认值 | 示例 |
client_id | 应用 ID | 是 | 无 | 123456 |
client_secret | 应用密钥 | 是 | 无 | 123456 |
grant_type | 授权类型 | 是 | 无 | authorization_code 或 refresh_token |
code | 授权码 | 授权类型为 authorization_code 时必填 | 无 | 123456 |
refresh_token | 刷新令牌 | 授权类型为 refresh_token 时必填 | 无 | 123456 |
redirect_uri | 重定向 URI | 授权类型为 authorization_code 时必填 | 应用回调地址 | https://example.com/oauth/callback |
示例:
POST https://example.com/oauth/token
Payload: client_id=123456&client_secret=123456&grant_type=authorization_code&code=123456&redirect_uri=https://example.com/oauth/callback
资源(用户)
/api/user
参数 | 说明 | 必填 | 默认值 | 示例 |
access_token | 访问令牌 | 是 | 无 | 123456 |
示例:
GET https://example.com/api/user?access_token=123456
返回用户信息
{
"id": 1,
"username": "BG5UWQ",
"avar_url": "",
"email": "",
"is_email_confirmed": 1,
...
}