华为云用户手册

  • 状态行 状态行格式如下: HTTP-Version Status-Code Reason-Phrase CRLF HTTP-Version:表示服务器HTTP协议的版本号。 Status-Code:表示服务器发回的响应状态代码。 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息,表示请求已接收,继续处理。 2xx:成功,表示请求已被成功接收、理解、接受。 3xx:重定向,要完成请求必须进行更进一步的操作。 4xx:客户端错误,请求有语法错误或请求无法实现。 5xx:服务器端错误,服务器未能实现合法的请求。 Reason-Phrase:表示状态代码的文本描述。
  • 请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下: Method Request-URI HTTP-Version CRLF Method:表示请求方法(所有方法全为大写),各个方法的解释如下: GET:请求获取Request-URI所标识的资源。 POST:在Request-URI所标识的资源后附加新的数据。 PUT:请求服务器存储一个资源,并用Request-URI作为其标识。 DELETE:请求服务器删除Request-URI所标识的资源。 Request-URI:是一个统一资源标识符。 可以在URI后面用‘?’和‘&’添加不同的查询条件组合。URI中“{}”中包含的内容为URI的参数,其中“?”之前的部分是路径参数,之后的部分是查询参数。HTTP-Version:表示请求的HTTP协议版本。 CRLF:表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
  • 举例 商家收到的调用请求数据示例如下: curl -X POST -H 'Content-Type: application/json' 'https://www.isvwebsite.com/saasproduce?signature=af71c5a7ef45310b8dc05ab15f7da50189ffa81a95cc284379ebaa5eb61155c0×tamp=1716363778801&nonce=RLLUammMSInlrNWb' --data '{"activity":"newInstance","buyerInfo":{"customerId":"688055390f3049f283fe9f1aa90f1858","customerName":"CBC_marketplace_mwx616072_01","userId":"1e86066c22754361933f607df834e4fe","userName":"CBC_marketplace_mwx616072_01","mobilePhone":"18652996659","email":"mapengfei8@huawei.com"},"orderInfo":[{"businessId":"8a2c4e6f-405a-4f8d-8e24-f41090522646","orderId":" CS 2210101920BWXLK","trialFlag":"0","orderAmount":12.78,"chargingMode":"PERIOD","periodType":"month","periodNumber":5,"provisionType":1,"productInfo":[{"skuCode":"a63ee5c9-4f86-11ed-9f95-fa163e8cb3b2","productId":"OFFI788963615933718528","linearValue":20}],"createTime":"20221024194509","expireTime":"20221224194509","extendParams":[{"name":"emailDomainName","value":"test.xxxx.com"},{"name":"extendParamName","value":"extendParamValue"}]}],"testFlag":"1"}'
  • 生成规则 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束 根据规则对规范请求字符串,密钥取x-sign值,规则: canonicalRequest = accessKey + nonce + timestamp + RequestPayload x-sign = HexEncode(HMAC_SHA256(canonicalRequest))
  • 举例 商家收到的调用数据示例如下: 请求示例: POST https://example.isv.com/produceAPI/v2/tenantSync Content-Type: application/json x-sign:11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48 x-timestamp:1680508066618 x-nonce:50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA {"instanceId": "huaiweitest123456","orderId": "CS1906666666ABCDE","tenantId": "68cbc86****************880d92f36422fa0e","tenantCode": "huawei","name": "huaiweitest","domainName": "https://example.tenantaccount.com","flag": 1,"testFlag": 0,"timeStamp": "20220413093539534"} 响应示例: HTTP/1.1 200 OK Content-Type: application/json { " resultCode": "000000", " resultMsg": "Success" }
  • 生成规则 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束 获取规范请求字符串,规则: canonicalRequest = accessKey + nonce + timestamp + Lowercase(HexEncode(HMAC_SHA256 (RequestPayload))) 3.根据规则对规范请求字符串,密钥取signature值,规则: signature = HexEncode(HMAC_SHA256(canonicalRequest))
  • 定义 云商店每次调用商家的接口时会根据一定规则对请求生成x-sign,并且将x-sign通过HEADER PA RAM S的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算x-sign,并且与云商店传递的x-sign相比较,完全相同即为校验通过,通过HEADER PARAMS传递的参数有: 参数 取值 描述 x-sign String 加密签名,通过一定的规则对请求进行签名产生的值。 x-timestamp String UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 x-nonce String 随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。
  • 定义 云商店每次调用商家的接口时会根据一定规则对请求生成signature,并且将signature通过URL PARAMS的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算signature,并且与云商店传递的signature相比较,完全相同即为校验通过,通过URL PARAMS传递的参数有: 参数 取值 描述 signature String 加密签名,通过一定的规则对请求进行签名产生的值。 timestamp Long UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 nonce String 随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。
  • 获取用户信息 GET /api/v1/oauth2/userinfo 请求参数 请求Header参数 参数 是否必选 参数类型 描述 Accept 是 String 接收响应类型,值:application/json。 Authorization 是 String 认证凭据,值:Bearer {access_token}。 响应参数 状态码: 200 响应Body参数 参数 参数类型 描述 id String 用户ID userName String 用户名 name String 姓名 email String 邮箱地址 mobile String 手机号 role String 角色 organizationName String 组织名称 accName String 登录名称 userId String 用户id organizationCode String 组织编码 loginName String 登录名称 projectName String 租户名称 tenant String 租户id 状态码: 401 响应Body参数 参数 参数类型 描述 error String 错误类型。 error_description String 错误描述。 请求示例 GET https://{domain_name}/api/v1/oauth2/userinfo Authorization: Bearer b7e1fda8-33ce-432c-9b97-7ff035fac... Accept: application/json 响应示例 状态码: 200 请求成功。 { "id" : "20201029190841785-CB37-8BD36B...", "name" : "test", "userName" : "test", "mobile" : "12345678901", "email" : "123@example.com" } 状态码: 401 认证失败。 { "error" : "unauthorized", "error_description" : "Full authentication is required to access this resource" } 状态码 状态码 描述 200 请求成功。 401 认证失败。
  • 获取AccessToken POST /api/v1/oauth2/token 请求参数 FormUrlEncoded参数 参数 是否必选 参数类型 描述 client_id 是 String 应用标识,注册应用后,分配的ClientId。 client_secret 是 String 应用密钥,注册应用后,分配的ClientSecret。 code 是 String 授权码,认证登录后回调获取的授权码。 grant_type 是 String 授权类型,固定值:authorization_code。 redirect_uri 否 String 回调地址,注册应用时填写的回调地址,需跟注册时保持一致。 响应参数 状态码: 200 响应Body参数 参数 参数类型 描述 access_token String 授权服务器返回给第三方应用的访问令牌。 token_type String 访问令牌类型。固定值:Bearer。 expires_in Long 访问令牌的有效期,以秒为单位。 scope String 授权范围。 refresh_token String 刷新令牌。默认不生成refresh_token,如果需要,在应用的"认证配置”中设置"Refresh Token有效期”后生成返回。 refresh_token有效期设置应比access_token长。 状态码: 400 响应Body参数 参数 参数类型 描述 error String 错误类型。 error_description String 错误描述。 请求示例 POST https://{domain_name}/api/v1/oauth2/token Content-Type: application/x-www-form-urlencoded code=z2D...& client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...& client_secret=******...& redirect_uri=https://example.com& grant_type=authorization_code 响应示例 状态码: 200 请求成功。 示例 1 · { · "access_token" : "******...", · "token_type" : "Bearer", · "expires_in" : "7200", · "scope" : "get_user_info" } 示例 2 · { · "access_token" : "******...", · "token_type" : "Bearer", · "expires_in" : "7200", · "scope" : "get_user_info", · "refresh_token" : "******..." } 状态码: 400 请求错误。 { "error" : "invalid_grant", "error_description" : "Invalid authorization code" } 状态码 状态码 描述 200 请求成功。 400 请求错误。
  • 认证登录获取授权码 GET /api/v1/oauth2/authorize Query参数 参数 是否必选 参数类型 描述 client_id 是 String 应用标识,注册应用后,分配的ClientId。 redirect_uri 是 String 回调地址,注册应用时填写的回调地址,表示应用接收 OneAccess 授权码的地址。 response_type 是 String 授权类型,固定值:code。 scope 否 String 授权范围 ,默认值:get_user_info。 state 否 String 应用的状态值。可用于防止CSRF攻击,成功授权后回调应用时会原样带回,应用用它校验认证请求与回调请求的对应关系。可以包含字母和数字。 请求参数 无 响应参数 状态码: 302 响应Header参数 参数 参数类型 描述 Location String 认证登录成功,重定向地址。例:https://example.com?code=z2D...&state=test 请求示例 GET https://{domain_name}/api/v1/oauth2/authorize?response_type=code&client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...&redirect_uri=https://example.com&scope=get_user_info&state=test 响应示例 无 状态码 状态码 描述 302 用户未登录,跳转用户登录页面; 用户已登录,携带授权码重定向到redirect_uri地址。例:https://example.com?code=z2D...&state=test。
  • 登录须知 开天aPaaS 企业工作台登录访问提供三种类型: 浏览器(推荐chrome)、PC客户端和移动端。 SaaS应用可以是轻应用(H5)或基于WEB架构应用,这些SaaS应用都经过oAuth或者CAS协议改造。 以oAuth2.0协议应用为例,企业用户首先通过用户名及密码登录 企业工作台 ,成功登录后,用户在企业工作台中点击某个SAAS应用, 企业工作台获取认证中心地址,并查询应用的回调址,并发起认证授权申请,回调成功后,SAAS应用获取Code及租户的ID,通过API获取accessToken及用户信息。 父主题: 联营账号基于开天aPaaS企业工作台登录
  • 生成AK、SK 注册并登录云商店,点击云商店首页右上角的“卖家中心”,进入卖家中心后台。 点击卖家中心左上角的“控制台”,进入管理控制台。 单击页面右上角的用户名,在下拉列表中单击“我的凭证”,进入“我的凭证”页面。 单击页面左侧导航中的“管理访问密钥”,进入“访问密钥”页面。 单击“新增访问密钥”,进入“新增访问密钥”页面。 输入短信验证码,单击“确定”,下载密钥,请妥善保管。 父主题: 获取AK/SK认证
  • 获取软件包下载地址 在做应用自动化部署时,商家需要将软件包上传到云商店资产中心,资产的创建和软件包的上传请参考《新增资产操作指导》。 资产创建成功后,商家将获得资产ID、资产类型和资产的版本,如下图所示。 资产ID、资产类型和资产版本将在Terraform模板中使用,商家可以通过Data Sources:huaweicloud_koogallery_assets,查询托管在云商店的软件包,示例代码如下,商家可以在Shell和PowerShell脚本中通过${ software_url_decode }获得软件包的下载地址,获得下载地址后,商家可以下载软件包并进行解压安装。 data "huaweicloud_koogallery_assets" "assets" { asset_id = "asset_id" deployed_type = "software_package" asset_version = "V1.0" } locals { software_url = data.huaweicloud_koogallery_assets.assets.assets[0].software_pkg_deployed_object[0].internal_path software_url_decode = jsondecode("\"${local.software_url}\"") } 父主题: 发布应用资产,上传软件包和模板
  • 错误码 表2 错误码 http状态码 resultCode resultMsg 描述 200 MKT.0000 Success. 请求成功 500 MKT.0999 System internal error. 其它服务内部错误 500 MKT.0100 Failure of input parameter 输入参数校验失败 参数范围超限,非法值或格式错误 400 MKT.0101 Invalid parameter 参数无效 输入非接口定义的参数,多参数或少必选参数 400 MKT.0199 Request parameter error 请求参数错误 其它参数错误 401 MKT.0150 Illegal operation 通常是进行了不被授权的操作,例如instanceId对应的产品不是AK/SK对应的商家发布的 401 MKT.0151 No authority 无API访问权限 token非商家角色 401 MKT.0154 Illegal token 鉴权失败 token无效 406 MKT. 0250 Access frequency overlimit 访问频率超限 500 MKT.9001 Instance ID not found. 实例ID不存在(商品续费、过期、资源释放接口可能返回) 500 MKT.9002 Invalid usage enties. 计量实体无效 500 MKT.9003 Usage records extends size limit. 计量记录数超出限制(100条) 500 MKT.9004 Record beginTime extends Limit. 计量记录的起始时间超出有效期(当前时间21天以内) 400 95000001 req param is invalid 请求参数错误(正则、必填项、长度等不满足) 405 95000002 Request method not supported 请求method类型不支持 415 95000003 Content type not supported 请求体类型不支持(Content-type不是application/json) 400 95000004 req message is not readable 请求体不可读(无法格式化成json) 500 MKT.9005 order is not exist. 请求的订单不存在 其中,仅在resultCode为MKT.0100、MKT.0150、MKT.0250、MKT.9001、MKT.9002、MKT.9004、MKT.9005时,失败响应中包含extra_info字段。失败响应中resultMsg除字段描述,还包含响应失败详情。您可以结合失败详情和extra_info内容定位并解决问题。 成功响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: length Date: response time { "resultCode": "MKT.0000", "resultMsg": "Success", "orderInfo": { "orderId": "CS2207261447AUY4H", "orderType": "NEW", "createTime": "20220726064736", "orderLine": [ { "orderLineId": "CS2207261447AUY4H-000001", "chargingMode": "PERIOD", "periodType": "year", "periodNumber": 1, "expireTime": "20230726155959", "productInfo": [ { "productId": "OFFI758576253042421760", "skuCode": "da9b4d34-ee8a-4355-a823-13e034e49986", "linearValue": 10, "productName": "SaaS测试商品,测试规格,基础版,包周期" } ], "extendParams": [] } ], "buyerInfo": { "mobilePhone": "18699999999", "email": 123@test.com, "customerId": "688055390f3049f283fe9f1aa90f7ds3", "customerName": "hw1235sd3123" } } } 失败响应示例 HTTP/1.1 401 UnauthorizedContent-Type: application/json;charset=UTF-8Content-Length: lengthDate: response time { "resultCode": "CBC.0150", "resultMsg": "Illegal operation. param[isvId] and param[instanceId] does not match." }
  • 公共响应消息头参数 表1 公共响应消息头 名称 描述 示例 Date HTTP协议标准报头。表示消息发送的时间,时间的描述格式由rfc822定义。 Mon, 12 Nov 2007 15:55:01 GMT Server HTTP协议标准报头。包含了服务器用来处理请求的软件信息。 Nginx Content-Length HTTP协议标准报头。用于指明实体正文的长度,以字节方式存储的十进制数字来表示。 xxx Content-Type HTTP协议标准报头。用于指明发送给接收者的实体正文的媒体类型。 application/json 父主题: 公共参数
  • 公共请求消息头参数 表1 公共请求消息头 名称 描述 是否必选 示例 x-sdk-date 请求的发生时间,格式为:yyyyMMdd'T'HHmmss'Z'。 取值为当前系统的GMT时间。 否 使用AK/SK认证时必选 20160629T101459Z Authorization 签名认证信息 该值来源于请求签名结果。 请参考 请求签名流程。 否 使用AK/SK认证时必选 - Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时必选 mkt.myhuaweicloud.com Content-type 发送的实体的MIME类型。 是 application/json 父主题: 公共参数
  • 状态码 HTTP响应状态码如下表所示。 表1 HTTP响应状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 接口使用方法
  • 状态行 状态行格式如下: HTTP-Version Status-Code Reason-Phrase CRLF HTTP-Version:表示服务器HTTP协议的版本号。 Status-Code:表示服务器发回的响应状态代码。 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息,表示请求已接收,继续处理。 2xx:成功,表示请求已被成功接收、理解、接受。 3xx:重定向,要完成请求必须进行更进一步的操作。 4xx:客户端错误,请求有语法错误或请求无法实现。 5xx:服务器端错误,服务器未能实现合法的请求。 Reason-Phrase:表示状态代码的文本描述。
  • 请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下: Method Request-URI HTTP-Version CRLF Method:表示请求方法(所有方法全为大写),各个方法的解释如下: GET:请求获取Request-URI所标识的资源。 POST:在Request-URI所标识的资源后附加新的数据。 PUT:请求服务器存储一个资源,并用Request-URI作为其标识。 DELETE:请求服务器删除Request-URI所标识的资源。 Request-URI:是一个统一资源标识符。 可以在URI后面用‘?’和‘&’添加不同的查询条件组合。URI中“{}”中包含的内容为URI的参数,其中“?”之前的部分是路径参数,之后的部分是查询参数。HTTP-Version:表示请求的HTTP协议版本。 CRLF:表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
  • 接口调用流程 接口调用的流程为: 获取AK/SK认证 调用接口前,请获取请求认证,并将认证字段填充至下一步中的方法中,进行请示构建,实现请求的认证。 调用接口采用AK/SK认证方式。 AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。 通过API网关向下层服务发送请求时,必须使用AK(Access Key ID)、SK(Secret Access Key)对请求进行签名。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 说明: 1、如何获取SDK请参考《使用APP认证调用API》;2、如何获取AK/SK请参考《AK/SK认证说明》 构造请求方法 填充请求参数构建请求方法。 发起请求 解析消息响应 父主题: 接口使用方法
  • 使用方法 华为云API符合RESTful API设计理论。 REST从资源的角度观察整个网络,分布在各处的资源由URI(Uniform Resource Identifier)确定,客户端的应用通过URL(Unified Resource Locator)获取资源。 URL的一般格式为:https://Endpoint/uri。 URL中的参数说明如下表所示。 表1 URL中的参数说明 参数 描述 Endpoint Web服务入口点的URL,云商店的Endpoint为“mkt.myhuaweicloud.com”。 uri 资源路径,也即API访问路径。从具体接口的URI模块获取,例如“v1.0/{partner_id}/billing/bill-mgr/push-usage-data”。 其中,uri中的用户标识参数说明如下: 使用“partner_id”标识,表示该接口只能使用合作伙伴(商家)自身的AK/SK或者Token调用。 华为云接口采用HTTP传输协议,有如下约束条件: 请求/响应报文使用JSON报文UTF-8字符集编码。 媒体类型表示为Application/json。 可选参数在消息体中可以不编码。 接口请求参数和响应参数中时间格式统一为UTC时间(包括时区),格式为yyyyMMdd'T'HHmmss'Z'。 其中,HH范围是0~23,mm和ss范围是0~59。 父主题: 接口使用方法
  • 响应参数 表2 状态码 状态码 描述 200 请求成功。 401 认证失败。 表3 响应Body参数 参数 参数类型 描述 id String 用户ID userName String 用户名 name String 姓名 email String 邮箱地址 mobile String 手机号 error String 错误类型。 error_description String 错误描述。 role String 角色 organizationName String 组织名称 userId String 用户id organizationCode String 组织编码 projectName String 租户名称 tenant String 租户id 响应示例 状态码:200 请求成功。 { "id" : "20201029190841785-CB37-8BD36B...", "name" : "test", "userName" : "test", "mobile" : "12345678901", "email" : "123@example.com" } 状态码:401 认证失败。 { "error" : "unauthorized", "error_description" : "Full authentication is required to access this resource" }
  • 请求参数 表1 请求Header 参数 是否必选 参数类型 描述 Accept 是 String 接收响应类型,值:application/json。 Authorization 是 String 认证凭据,值:Bearer {access_token}。 请求示例 GET {domain_name}/api/v1/oauth2/userinfo Authorization: Bearer ****** Accept: application/json
  • 请求参数 表1 FormUrlEncoded参数 参数 是否必选 参数类型 描述 client_id 是 String 应用标识,注册应用后,分配的ClientId。 client_secret 是 String 应用密钥,注册应用后,分配的ClientSecret。 grant_type 是 String 授权类型,固定值:refresh_token。 refresh_token 是 String 刷新令牌,获取Access Token接口中返回。 请求示例 POST {domain_name}/api/v1/oauth2/token Content-Type: application/x-www-form-urlencoded client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...& client_secret=******...& refresh_token=******...& grant_type=refresh_token
  • 响应参数 表2 状态码 状态码 描述 200 请求成功。 400 请求错误。 状态码:200 表3 响应Body参数 参数 参数类型 描述 access_token String 授权服务器返回给第三方应用的访问令牌。 token_type String 访问令牌类型。固定值:Bearer。 expires_in Long 访问令牌的有效期,以秒为单位。 scope String 授权范围。 refresh_token String 刷新令牌。 状态码:400 表4 响应Body参数 参数 参数类型 描述 error String 错误类型。 error_description String 错误描述。 响应示例 状态码:200 请求成功。 { "access_token" : "******", "token_type" : "Bearer", "expires_in" : 7200, "scope" : "get_user_info", "refresh_token" : "******" } 状态码:400 请求错误。 { "error" : "invalid_grant", "error_description" : "Invalid refresh token" }
  • 响应参数 表2 响应Body参数 参数 参数类型 描述 access_token String 授权服务器返回给第三方应用的访问令牌。 token_type String 访问令牌类型。固定值:Bearer。 expires_in Long 访问令牌的有效期,以秒为单位。 scope refresh_token String String 授权范围。 refresh_token String 刷新令牌,默认生成,有效期30天。 error String 错误类型。 error_description String 错误描述。 refresh_token有效期设置应比access_token长。 响应示例 表3 状态码 状态码 描述 200 请求成功。 400 请求错误。 状态码:200 请求成功。 示例1 { "access_token" : "******", "token_type" : "Bearer", "expires_in" : 7200, "scope" : "get_user_info" } 示例2 { "access_token" : "******", "token_type" : "Bearer", "expires_in" : 7200, "scope" : "get_user_info", "refresh_token" : "******" } 状态码:400 请求错误。 { "error" : "invalid_grant", "error_description" : "Invalid authorization code" }
  • 请求参数 表1 FormUrlEncoded参数 参数 是否必选 参数类型 描述 client_id 是 String 应用标识,注册应用后,分配的ClientId。 client_secret 是 String 应用密钥,注册应用后,分配的ClientSecret。(解密后的明文) code 是 String 授权码,认证登录后回调获取的授权码。(code值仅可使用一次) grant_type 是 String 授权类型,固定值:authorization_code。 redirect_uri 否 String 回调地址,注册应用时填写的回调地址。 请求示例 POST {domain_name}/api/v1/oauth2/token Content-Type: application/x-www-form-urlencoded code=z2D...& client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...& client_secret=******...& redirect_uri=https://example.com& grant_type=authorization_code
  • 登录场景:accesstoken续期 用户登录获得的access_token有效期默认为2小时,refresh_token刷新令牌有效期默认为30天,在用户持续访问应用的情况下,服务端应提供access_token的续期功能。 续期功能内部调用时序图: 接口URL请参考联营能力开放接口的刷新Access Token,示例URL如下: {domain_name}/api/v1/oauth2/token Content-Type:application/x-www-form-urlencoded&client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...&client_secret=******...&refresh_token=******...&grant_type=refresh_token 父主题: 联营账号基于WEB登录
  • 请求方法:POST 接口URL:生产地址+固定子路径,其中固定子路径为/produceAPI/v2/allOrgSync; 接口示例:生产地址为https://example.isv.com,则接口URL为https://example.isv.com/produceAPI/v2/allOrgSync BODY请求参数 参数 必选 参数类型 描述 instanceId M String(64) 说明: 卖家申请应用凭证的时候传空,买家必传。 tenantId M String(64) 租户ID orgInfoList M OrgInfo[] 组织内部门层级信息,包含部门代码、部门名称、上级部门 请参考Orglnfo类型定义 testFlag M Integer(2) 0-生产正式数据1-调测数据 timeStamp M String 默认时区东8区,时间格式:20220420114117642 Orglnfo类型定义 参数 必选 参数类型 描述 orgCode M String(64) 部门代码 orgName M String(128) 部门名称 parentCode O String(64) 上级部门,顶级部门的上级部门为空 响应参数 参数 必选 参数类型 描述 resultCode M String(6) 响应码, 具体请参见调用结果码说明。 resultMsg O String(255) 响应信息 示例: 请求示例: POST https://example.isv.com/produceAPI/v2/allOrgSync Content-Type: application/json x-sign: 11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48 x-timestamp: 1680508066618 x-nonce:50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA {"instanceId": "hua******t123456","tenantId": "68cbc8******b880d92f36422fa0e","orgInfoList": "[{orgCode:\"00000001\", orgName:\"产品部\", parentCode:\"265789314\" },{orgCode:\"00000002\", orgName:\"测试部\", parentCode:\"265789314\" }]","flag": 1,"testFlag": 0,"timeStamp": "20220413093539534"} 响应示例: HTTP/1.1 200 OK Content-Type: application/json { " resultCode": "000000", " resultMsg": "Success" }
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全