授权认证
CODING 提供了丰富的 API 接口,注册应用即可使用,无需审核,支持两种认证方式:OAuth 2.0 协议、个人访问令牌。
OAuth 认证
创建 CODING 应用
- 点击【个人设置】->【开放生态】->【创建应用】,填写信息。「回调地址」可填写为
http://127.0.0.1/
,便于本地开发。
- 创建完成会获得 Client ID 和 Client Secret。
用户授权
浏览器访问以下链接,进入到授权登录页面:
https://{your-team}.coding.net/oauth_authorize.html
参数说明:
- your-team:团队域名前缀;
- client_id:应用详情页的 Client ID;
- redirect_uri:应用详情页填写的回调地址;
- response_type:返回类型,固定为 code;
- scope:授权范围,以逗号分隔,包括:
scope 名称 | 授权 | 说明 |
---|---|---|
user | 读 | 获取用户信息(名称、头像等 ) |
user:email | 读 | 读取用户的 email |
notification | 读/写 | 读取用户通知信息 |
project | 读 | 授权项目信息、项目列表,仓库信息,公钥列表、成员 |
project:api_doc | 发布 | 授权发布 API 文档 |
project:artifacts | 读/写 | 授权推送、拉取制品库 |
project:depot | 读/写 | 完整的仓库控制权限 |
project:file | 读/写 | 授权读取与操作文件 |
project:issue | 读/写 | 授权读取与操作项目协同模块 |
project:key | 读/写 | 授权读取与操作部署公钥和个人公钥 |
project:members | 读/写 | 授权项目管理者读取与操作成员 |
project:notice | 读/写 | 授权发布、删除、查询项目公告接口 |
请求示例:
open https://codes-farm.coding.net/oauth_authorize.html?client_id=987682ac012328f6f7afd6669146db99&redirect_uri=http://127.0.0.1/&response_type=code&scope=user
登录授权后,浏览器将带着授权码(code)参数跳转到回调地址,如:
http://127.0.0.1:9002/api/oauth/callback?code=7923f69445119400c12e1a70b027a97a
获取 access_token
获取授权码(code)后,开发者的后端程序向 CODING 发送请求,获取 access_token。
请求链接:
POST https://{your-team}.coding.net/api/oauth/access_token
参数说明:
- your-team:团队域名前缀;
- client_id:应用详情页的 Client ID;
- client_secret:应用详情页的 Client Secret;
- code:上一步获取的授权码;
- grant_type:授权类型,固定为 authorization_code;
curl 请求示例:
curl -H "Accept: application/json" \
-d "client_id=987682ac012328f6f7afd6669146db99" \
-d "client_secret=95275cca8d93366fe130e6edf4abab4df68914db" \
-d "code=abcde211985abcd82bcd3216629ce019" \
-d "grant_type=authorization_code" \
-X POST https://codes-farm.coding.net/api/oauth/access_token
返回值:
{
"access_token": "8883405e6c14856a1e2b3c4e2d2f2666",
"refresh_token": "6663211fda1a41f5a1c1fa320d819aaa",
"team": "anywhere",
"expires_in": "780260",
"token_type":"bearer"
}
获取当前用户信息
请求接口:
GET https://{your-team}.coding.net/api/me
header 认证:Authorization: Bearer {上一步获取的 access_token}
curl 请求示例:
curl -H "Authorization: Bearer at58a21646f43699196c42a30d77at" \
https://codes-farm.coding.net/api/me
返回值:
{
"avatar": "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg",
"created_at": 1572178118000,
"global_key": "KMRnIKgzbV",
"name": "sink",
"name_pinyin": "sink",
"updated_at": 1598411867000,
"path": "/u/KMRnIKgzbV",
"id": 183478,
"team": "anywhere",
"email_validation": 1
}
个人令牌认证
访问【个人设置】>【访问令牌】,可创建「个人令牌」,放置于 header 中用于认证,比如 Authorization: Bearer 676d875f3a7e8c43040c11
。
项目令牌认证
访问【项目设置】>【开发者选项】>【项目令牌】,可创建「项目令牌」,把生成的「密码」放置于 header 中用于认证(项目令牌和当前用户无关,无法调用个人资料接口),比如 Authorization: Bearer 508012345654321803
。
新版接口认证方式
新版接口不再使用 RESTFul,而使用 POST 和统一接口地址。
统一接口地址:https://e.coding.net/open-api
header:
- Content-Type: application/json
- Authorization: Bearer {token}
输入示例:
{
"Action":"DescribeUserProjects",
"userId":123
}
curl 请求示例:
curl -H "Authorization: Bearer 9876ec5fd14e4567a15e9bba1ed67890" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"Action": "DescribeUserProjects","userId": 123}' \
-X POST https://e.coding.net/open-api
输出示例:
{
"Response" : {
"ProjectList" : [
{
"DisplayName" : "vue serverless demo",
"Id" : 7920032
},
{
"DisplayName" : "PHP demo",
"Id" : 7917005
}
]
},
"RequestId": "ae8e2d5f-569b-443e-8c61-440ea3a7562a"
}
}

感谢反馈有用
感谢反馈没用