Enterprise OAuth

功能介绍

CODING 提供了丰富的 API 接口,使得用户可以方便地实现将 CODING 与许多服务的数据交互,功能对接。在 CODING 的开放生态当中注册应用无需审核即可使用授权,采用 OAuth 2.0 协议认证。

OAuth 2.0 协议交互流程:

创建 CODING 应用

  1. 点击【个人设置】->【开放生态】->【马上新建】,注册要接入 CODING 的应用。

  1. 在创建应用页面,填写接入的应用信息:
  • 应用名称、应用主页及回调地址为必填项;
  • 其中回调地址是用户授权后,CODING 回调到应用,并且回传授权码的地址;
  • 如果没有上传图标将自动生成应用图标。

填写完毕后,点击【创建应用】。

  1. 应用创建完成后,在应用详情页,会生成 Client ID 和 Client Secret ,保存以便后续认证使用。

用户授权

  1. 访问以下链接,进入到授权登录页面:
https://{团队名称}.coding.net/oauth_authorize.html?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code[&scope={scope}]

上述链接参数说明如下:

  • 团队名称就是团队登录域名中的名称。
  • client_id 即应用详情页生成的 Client ID;
  • redirect_uri 就是回调地址;
  • scope 就是参数部分给出的权限范围,多个 scope 之间用”,”隔开,文末给出了该参数的详细说明。

带入参数后的示例如下:

https://anywhere.coding.net/oauth_authorize.html?client_id=ccb76756457bb9c456ec53cf6b985309&redirect_uri=http://127.0.0.1:9002/api/oauth/callback&response_type=code&scope=user,project
  1. 在授权登录页面,输入用户名帐号密码。

跳转至授权页面后,点击授权。

授权通过后,CODING 会将授权码回传给应用在 CODING 注册的回调地址,保存授权码 code 即可。

  • 上图示例中 CODING 回调了地址:
http://127.0.0.1:9002/api/oauth/callback?code=7923f69445119400c12e1a70b027a97a&scope=user%2Cproject&team=anywhere
  • 上图示例中 CODING 传回了授权码 code:
7923f69445119400c12e1a70b027a97a

授权通过后,还可以在应用详情页面看到该应用的用户数变为 1。

获取 access_token

获取到授权码后,向 CODING 的 Token Endpoint 发送请求,获取 access_token。

Token Endpoint 请求链接如下:

http://{团队名称}.coding.net/api/oauth/access_token?client_id={client_id}&client_secret={client_secret}&grant_type=authorization_code&code={code}

上述链接参数说明如下:

  • 团队名称就是团队登录域名中的名称。
  • client_id 即应用详情页生成的 Client ID;
  • client_secret 为 Client Secret ;
  • code 就是上一步得到的授权码。

带入参数后的示例如下:

http://anywhere.coding.net/api/oauth/access_token?client_id=ccb76756457bb9c456ec53cf6b985309&client_secret=db29d47d60995a1ab1ae8e7aa78360bdfb34d89c&grant_type=authorization_code&code=7923f69445119400c12e1a70b027a97a

访问该链接后,CODING 会返回如下格式值,保存 access_token:

{"access_token":"xxxxxx", "refresh_token": "xxxxxx",  "team":"xxxxxx"  "expires_in": "xxxxxx" }

返回值示例:

访问资源

获取到 access_token 之后,就可以访问受保护的资源了。

例如访问如下链接获取当前用户信息:

https://anywhere.coding.net/api/current_user?access_token=05acb701b20848928dfdaad85ff5588c

若 Response body 中的 code 为 0,表示正常接收请求。如果 code 为其他(除 0),表示请求异常,请参照 msg 中的返回信息进行处理。

资源访问列表如下,默认请在 URL 末尾携带 access_token 参数。

以下项目名称和团队名称的参数都是指项目域名以及团队域名中的字段。

获取用户信息

GET  /api/account/current_user

获取用户项目列表

GET  /api/user/projects

获取 Webhook 列表

GET  /api/user/{user_name}/project/{project_name}/git/hooks
参数 数据类型 说明
user_name string 团队名称
project_name string 项目名称

从 branch 名称查询 commit sha

GET  /api/user/{user_name}/project/{project_name}/git/tree/{branch_name}
参数 数据类型 说明
user_name string 团队名称
project_name string 项目名称
branch_name string 分支名称

读取代码仓库中某个文件

GET  /api/user/{user_name}/project/{project_name}/git/blob/{branch_name}/{file_path}
参数 数据类型 说明
user_name string 团队名称
project_name string 项目名称
branch_name string 分支名称
file_path string 文件在 repo 中的路径 ( 包含文件名 )

scope 参数

scope 名称 描述 授权
user 获取用户基本信息,包括姓名、头像、tag 、email、动态
user:email 读取用户的邮件
user:phone 读取用户的手机号
team 获取团队信息
project 授权项目信息、项目列表,仓库信息,公钥列表、成员
project:members 授权项目管理者读取与操作成员 读写
project:file 授权读取与操作文件 读写
project:depot 完整的仓库控制权限 读写
project:key 授权读取与操作部署公钥和个人公钥 读写
project:wiki 授权读取与操作 wiki 读写
project:notice 授权发布、删除、查询项目公告接口 读写
notification 读取用户通知信息 读写
上一篇WebHook
文档是否对您有用?
感谢反馈有用
感谢反馈没用