
# 创建OAuth授权 - CreateOAuthAuthorization
#### 功能介绍
创建OAuth授权。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=ServiceStage&api=CreateOAuth)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-servicestage/servicestage_06_0183.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                                | 访问级别  | 资源类型（\*为必须）       | 条件键 | 别名                      | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | servicestage:repositoryAuth:create | write | repositoryAuth \* | -   | servicestage:app:create | -      |
     
  
 
#### URI
POST /v1/{project_id}/git/auths/{repo_type}/oauth
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 租户项目ID。获取方法，请参考[获取项目ID](https://support.huaweicloud.com/api-servicestage/servicestage_06_0164.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| repo_type  | 是    | String | **参数解释：** 代码仓类型。 **取值范围：** - DevCloud：codearts制品仓。  - Gitee：开源中国推出代码托管平台。    - GitHub：开源代码仓。  - GitLab：开源代码仓。  - Bitbucket：源代码托管网站。   **默认取值：** 不涉及 |
   
表2查询参数 
| 参数  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| tag | 否    | String | **参数解释：** 站点标签。 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 请求消息
表3请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| Content-Type | 是    | String | **参数解释：** 消息体的类型（格式）。 **约束限制：** 不涉及 **取值范围：** application/json;charset=utf8 **默认取值：** 不涉及                                                                                                                              |
| X-Auth-Token | 是    | String | **参数解释：** 调用接口的认证方式分为Token和AK/SK两种，如果您使用的Token方式，此参数为必填，请填写Token的值。Token获取方式，请参考[认证鉴权](https://support.huaweicloud.com/api-servicestage/servicestage_06_0010.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
表4请求Body参数 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| name  | 是    | String | **参数解释：** 授权名称。 **取值范围：** 不涉及 **默认取值：** 不涉及                          |
| code  | 是    | String | **参数解释：** git仓库授权后，重定向返回的url里面的code参数。 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| state | 是    | String | **参数解释：** git仓库授权后，一次性的认证编码和随机串。 **取值范围：** 不涉及 **默认取值：** 不涉及        |
   
![](https://support.huaweicloud.com/api-servicestage/public_sys-resources/note_3.0-zh-cn.png)
code和state参数值获取方法：
1. 在浏览器地址栏中输入访问[获取授权重定向URL - ObtainAuthorizationRedirectionURL](https://support.huaweicloud.com/api-servicestage/servicestage_06_0093.html)接口获取到的URL并回车。
2. 在登录页面输入您的代码仓库账号和密码。 如果您已经登录代码仓库，则无需执行这一步。
   
3. 在[华为云控制台登录页面](https://auth.huaweicloud.com/authui/login.html?service=https://console.huaweicloud.com/console/#/login)输入账号和密码，单击"登录"。
   如果您已经登录华为云控制台，则无需执行这一步。
   
4. 等待页面显示新建授权失败后，复制地址栏的URL。 例如：
   https://console.huaweicloud.com/servicestage/oauth?repo_type=github\&**code** =04bed2df009f3fc9\*\*\*c\&**state**=%242a%2410%24.uQYThj5yKFs51w9s9ajeuQ0NSGshPH7IUfXoZLPlz7J%2FoAJ8B\*\*\*
   
5. 对获取到的URL进行URL解码，获得解码后的URL。 示例如下：
   https://console.huaweicloud.com/servicestage/oauth?repo_type=github\&**code** =04bed2df009f3fc9\*\*\*c\&**state**=$2a$10$.uQYThj5yKFs51w9s9ajeuQ0NSGshPH7IUfXoZLPlz7J/oAJ8B\*\*\*
   获取其中code和state对应的参数值。
   
获取到的state参数值为一次性的认证编码和随机串，仅支持使用一次。如需再次调用本接口创建OAuth授权，请再次执行[获取授权重定向URL - ObtainAuthorizationRedirectionURL](https://support.huaweicloud.com/api-servicestage/servicestage_06_0093.html)获取URL并参考本方法获取code和state参数值。
#### 响应消息
表5响应参数 
| 参数            | 参数类型   | 描述                                                                                                                                     |
|:---|:---|:---|
| authorization | Object | **参数解释：** 授权结构体，请参考[表6]。 |
   
 表6authorization 
| 参数          | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| name        | String  | **参数解释：** 授权名称。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| repo_type   | String  | **参数解释：** 代码仓类型。 **取值范围：** - DevCloud：codearts制品仓。  - Gitee：开源中国推出代码托管平台。    - GitHub：开源代码仓。  - GitLab：开源代码仓。  - Bitbucket：源代码托管网站。   |
| repo_host   | String  | **参数解释：** 仓库地址。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| repo_home   | String  | **参数解释：** 您的仓库主页。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| repo_user   | String  | **参数解释：** 您的仓库用户名。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| avartar     | String  | **参数解释：** 您的仓库头像。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| token_type  | String  | **参数解释：** 仓库授权方式。 **取值范围：** - oauth：令牌。  - personal：个人信息。  - password：密码。                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| create_time | Long    | **参数解释：** 仓库授权创建时间戳。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| update_time | Long    | **参数解释：** 仓库授权修改时间戳。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| status      | Integer | **参数解释：** 仓库授权状态。 **取值范围：** - 0：正常  - 1：过期  - 2：未认证                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
#### 请求示例
创建名称为auth1的OAuth授权。
```
{
  "name": "auth1",
  "code": "04bed2df009f3fc9***c",
  "state": "$2a$10$.uQYThj5yKFs51w9s9ajeuQ0NSGshPH7IUfXoZLPlz7J/oAJ8B***"
}
```
#### 响应示例
```
{
  "authorization": {
    "name": "auth1",
    "repo_type": "github",
    "repo_host": "https://api.github.com",
    "repo_home": "https://github.com/tom-repo",
    "repo_user": "repo",
    "avartar": "https://avatars.githubusercontent.com/u/73919200?v=4",
    "token_type": "oauth",
    "create_time": 1649758626858,
    "update_time": 1649758626858,
    "status": 0
  }
}
```
#### 状态码
| 状态码 | 描述     |
|:---|:---|
| 200 | 操作成功。  |
| 400 | 错误的请求。 |
   
#### 错误码
请参考[ServiceStage错误码](https://support.huaweicloud.com/api-servicestage/servicestage_06_0162.html)。
