云服务器内容精选

  • 使用自定义错误码 自定义错误码创建完成后,可在脚本中使用。在脚本中,调用抛出错误信息的error函数I18nError('ErrorCodeName','变量1','变量2')。该函数中,输入参数为错误码名称"t__testErrorCode"和错误码信息中所携带的变量("val1"和"val2")。 创建脚本。 参考创建空白AstroZero脚本中操作,创建一个空白脚本。 在脚本编辑器中,输入如下代码。 // test custom error func , get diff language error by user lang import * as error from 'error'; export class TestDemo { @action.method({ label: 'test', description: 'error code', input: 'No input', output: 'No output' }) public test() { //使用I18nError函数设定错误码和错误码信息携带变量 throw new error.I18nError('t__testErrorCode', ["val1", "val2"]); } } 其中,“t__testErrorCode”为自定义错误码名称,请根据实际情况配置。 单击,保存脚本后,单击,启用脚本。 按照定义API接口中操作,绑定上述开发的脚本,进行测试。 图3 自定义错误信息测试
  • 自定义OAuth2授权码模式接入鉴权 前面介绍了第三方系统在调用AstroZero业务接口前,如何配置接入鉴权。鉴权通过后,才能实现调用AstroZero业务接口。在AstroZero中开发的应用,也可以自定义OAuth2授权码模式接入鉴权。当应用配置鉴权后,只有通过鉴权的第三方系统才可以访问应用。 参考授权码模式接入认证中的4~6,获取鉴权ID“client_id”和鉴权密钥“client_secret”。 在应用开发页面,通过自定义接口,给第三方接入调用,用于第三方系统获取授权码code。 应用调用脚本API,判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配。 如果匹配,则由AstroZero应用自定义接口,实现登录跳转和授权跳转。在授权完成后,再调用脚本API获取授权码code,并将需要展示给第三方的授权用户信息通过该API传给AstroZero,AstroZero会返回一个code。最后,应用重定向到“redirect_url”,并携带code。 判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配的API样例如下: // Here's your code. import * as oauth from 'oauth' let handle = oauth.getAuthorizeHandle() let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c", } let pass = handle.checkURL(clientDatas) console.log(pass) //true if (pass){ //判断是否登录,做登录跳转 //判断是否授权,做授权跳转 } 获取授权码code的脚本API样例如下: // Here's your code. import * as oauth from 'oauth' let handle = oauth.getAuthorizeHandle() //前面步骤已经走完 let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c", } let userInfo = { "name": "jack", "phone": "1256287222", "email": "example.com" } let code = handle.getAuthCode(clientDatas, userInfo) console.log(code) //WEUcqXbeQDKUHxcn8til3Q 第三方系统接收到该请求,并解析出code后,在后端访问接口获取access_token,步骤和8一致。 第三方系统在获取到access_token后,使用该凭证访问平台“https:// 域名 /u-route/baas/oauth/v1.0/third/userinfo”接口(该接口和10中的接口不同),来获取授权用户的信息。 响应示例如下: { "resCode": "0", "resMsg": "成功", "result": { "email": "example.com", "name": "jack", "phone": "1256287222" } }
  • 操作场景 在AstroZero中,可通过配置OAuth管理第三方接入鉴权。AstroZero采用OAuth 2.0协议,进行接入认证。第三方系统在调用AstroZero业务接口前,需要在AstroZero上进行鉴权注册,获取接入客户端ID、密钥等鉴权信息,才能实现调用AstroZero业务接口。 AstroZero提供了“客户端模式”和“授权码模式”两种授权模式,进行OAuth鉴权。 客户端模式 通过该模式获取的access-token,用于在调用API接口时进行鉴权,使用时需在请求消息头上设置“access-token”。 图1 客户端模式 授权码模式 通过该模式获取的access-token,只能用于在获取用户信息时进行鉴权,使用时需在请求消息头上设置“Authorization”。 图2 授权码模式
  • 如何使用自定义错误码 自定义错误码创建完成后,可在脚本中使用。在脚本中,调用抛出错误信息的error函数I18nError('ErrorCodeName','变量1','变量2')。该函数中,输入参数为错误码名称"t__testErrorCode"和错误码信息中所携带的变量("val1"和"val2")。 创建脚本。 在应用设计器中,单击左侧导航栏中的“逻辑”。 单击脚本后的,进入新增脚本页面。 设置脚本的名称,模板选择“空脚本”,单击“添加”。 在脚本编辑器中,输入如下代码。 // test custom error func , get diff language error by user lang import * as error from 'error'; export class TestDemo { @action.method({ label: 'test', description: 'error code', input: 'No input', output: 'No output' }) public test() { //使用I18nError函数设定错误码和错误码信息携带变量 throw new error.I18nError('t__testErrorCode', ["val1", "val2"]); } } 其中,“t__testErrorCode”为自定义错误码名称,请根据实际情况配置。 单击,保存脚本后,单击,启用脚本。 按照定义API接口中操作,绑定上述开发的脚本,进行测试。 图3 自定义错误信息测试
  • 公共错误码 表1 错误码 http状态码 error_code error_msg 描述 200 92020000 Success 成功 200 92020001 internal error 其它服务内部错误 200 92020002 invalid param 请求参数不合法 200 92020003 illegal state 授权码状态不合法(授权码请勿重复激活) 200 92020004 can not active before user received. 激活码用户尚未领取 200 92020005 license code notexist 授权码ID不存在 父主题: 云商店开放接口描述
  • 响应参数 表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 错误码 http状态码 error_code error_msg 描述 200 CBC.0000 Success 成功 403 CBC.0150 Illegal operation 鉴权失败 400 CBC.0101 Invalid parameter 请求参数不合法 500 CBC.0999 internal error 其它服务内部错误 200 91381033 License resource invalid License资源不可用 200 91381034 license apply invalid 用户License申请不合法 200 91381035 license period has no remain amount License资源周期没余额了 200 91381036 inner error 内部错误 200 91381037 Invalid license format. License格式不正确 200 91381038 License apply has been denied. License申请已拒绝 200 91380150 Role permission denied 没有权限执行该操作,角色权限错误 父主题: 云商店开放接口指南
  • 请求参数 参数 类型 必填 说明 type String 是 类型 title String 是 标题 h5Uri String 是 h5的Uri from String 是 分享来源 desc String 否 描述 pcUri String 否 PC的Uri。isPCDisplya值为1时,该参数为必传参数 isPCDisplay Number 否 是否在PC显示分享消息。1:显示,0:不显示 iconURL String 否 分享图标
  • 请求参数 表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/tokenContent-Type: application/x-www-form-urlencodedclient_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 错误描述。