云服务器内容精选
-
使用Postman调用时,出现 获取Token 失败的情况 获取Token时,请依据报错信息,选择相应的解决方案。 Body体中服务所在区域是否正确, 对应的key值是否正确。 帐密报错The username or password is wrong 返回The userInfo is wrong 请正确填写username和domainname,一般情况下,username=domainname。如不确定,可登录“我的凭证”页面查看,如果使用 IAM 账号获取Token: username:IAM用户名(子账号名称) domainname:账号名 返回"error_code": "APIGW.0101" 请检查获取Token使用的url是否正确。以获取华北-北京四区域的token为例,采用post请求,url为: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 父主题: Token认证鉴权类
-
步骤说明 Client调用IdP提供的基于IdP initiated方式的登录链接,并在登录链接中设置公有云的地址,即公有云Metadata文件中的“entityID”。 Client获取IdP的登录页面,用户通过Client提交身份信息给IdP进行认证。 用户认证成功后,IdP构建携带用户身份信息的断言发送SAML Response,请求经过中间媒介Client。 Client对SAML Response进行重新封装后转发SAML Response,调用公有云提供的“通过IdP initiated方式获取联邦token”接口。 公有云对断言进行校验和认证,并根据用户在身份提供商配置的身份转换规则生成临时访问凭证。 用户根据分配的权限访问公有云资源。
-
响应示例 状态码为 201 时: 创建成功。 获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属账号名为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不显示catalog信息的Token。 响应Header参数(获取到的Token): X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB... 响应Body参数: { "token": { "catalog": [], "expires_at": "2020-01-04T09:05:22.701000Z", "issued_at": "2020-01-03T09:05:22.701000Z", "methods": [ "password" ], "project": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "aa2d97d7e62c4b7da3ffdfc11551f...", "name": "cn-north-1" }, "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "op_gated_Video_Campus" } ], "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "password_expires_at": "" } } } 获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属账号名为“IAMDomain”,作用范围为整个账号的Token。 响应Header参数(获取到的Token): X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB... 响应Body参数: { "token": { "catalog": [ { "endpoints": [ { "id": "33e1cbdd86d34e89a63cf8ad16a5f...", "interface": "public", "region": "*", "region_id": "*", "url": "https://iam.myhuaweicloud.com/v3.0" } ], "id": "100a6a3477f1495286579b819d399...", "name": "iam", "type": "iam" }, { "endpoints": [ { "id": "29319cf2052d4e94bcf438b55d143...", "interface": "public", "region": "*", "region_id": "*", "url": "https://bss.sample.domain.com/v1.0" } ], "id": "c6db69fabbd549908adcb861c7e47...", "name": "bssv1", "type": "bssv1" } ], "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "expires_at": "2020-01-04T09:08:49.965000Z", "issued_at": "2020-01-03T09:08:49.965000Z", "methods": [ "password" ], "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "secu_admin" }, { "id": "0", "name": "te_agency" } ], "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "password_expires_at": "" } } } 状态码为 400 时: 参数无效。请排查body体是否符合json语法。 { "error": { "code": 400, "message": "The request body is invalid", "title": "Bad Request" } } 状态码为 401 时: 认证失败。 如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系统会提示密码错误。请在华为云的登录页面,通过“忘记密码”功能,设置华为云账号密码,并在password中输入新设置的密码。 如果您的华为云账号已升级为华为账号,直接使用华为账号名和密码获取Token,系统会提示密码错误。建议您为自己创建一个IAM用户,授予该用户必要的权限,获取IAM用户Token。 { "error": { "code": 401, "message": "The username or password is wrong.", "title": "Unauthorized" } }
-
响应参数 表12 响应Header参数 参数 参数类型 描述 X-Subject-Token String 签名后的Token,小于32KB。 表13 响应Body参数 参数 参数类型 描述 Token Object 获取到的Token信息。 表14 Token 参数 参数类型 描述 catalog Array of objects 服务目录信息。 domain Object 获取Token的IAM用户所属的账号信息。如果获取Token时请求体中scope参数设置为domain,则返回该字段。 expires_at String Token过期时间。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 issued_at String Token下发时间。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 methods Array of strings 获取Token的方式。 project Object 获取Token的IAM用户所属账号的项目信息。如果获取Token时请求体中scope参数设置为project,则返回该字段。 roles Array of objects Token的权限信息。 user Object 获取Token的IAM用户信息。 表15 Token.catalog 参数 参数类型 描述 endpoints Array of objects 终端节点。 id String 服务ID。 name String 服务名称。 type String 该接口所属服务。 表16 Token.catalog.endpoints 参数 参数类型 描述 id String 终端节点ID。 interface String 接口类型,描述接口在该终端节点的可见性。值为“public”,表示该接口为公开接口。 region String 终端节点所属区域。 region_id String 终端节点所属区域ID。 url String 终端节点的URL。 表17 Token.domain 参数 参数类型 描述 name String 账号名称。 id String 账号ID。 表18 Token.project 参数 参数类型 描述 domain Object 项目所属账号信息。 id String 项目ID。 name String 项目名称。 表19 Token.project.domain 参数 参数类型 描述 id String 账号ID。 name String 账号名称。 表20 Token.roles 参数 参数类型 描述 name String 权限名称。 id String 权限ID。默认显示为0,非真实权限ID。 表21 Token.user 参数 参数类型 描述 name String IAM用户名。 id String IAM用户ID。 password_expires_at String 密码过期时间,“”表示密码不过期。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 domain Object IAM用户所属的账号信息。 表22 Token.user.domain 参数 参数类型 描述 name String IAM用户所属账号名称。 id String IAM用户所属账号ID。
-
请求示例 获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属租户名为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不显示catalog信息的Token。IAM用户名、所属账号名可以在界面控制台“我的凭证”中查看,具体获取方法请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。 POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAMDomain" //IAM用户所属账号名 }, "name": "IAMUser", //IAM用户名 "password": "IAMPassword" //IAM用户密码 } } }, "scope": { "project": { "name": "cn-north-1" //项目名称 } } } } 获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属账号名为“IAMDomain”,作用范围为整个账号的Token。IAM用户名、所属账号名可以在界面控制台“我的凭证”中查看,具体获取方法请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。 POST https://iam.myhuaweicloud.com/v3/auth/tokens { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAMDomain" //IAM用户所属账号名 }, "name": "IAMUser", //IAM用户名 "password": "IAMPassword" //IAM用户密码 } } }, "scope": { "domain": { "name": "IAMDomain" //IAM用户所属账号名 } } } }
-
功能介绍 该接口可以用于通过用户名/密码的方式进行认证来获取IAM用户的Token。Token是系统颁发给IAM用户的访问令牌,承载用户的身份、权限等信息。调用IAM以及其他云服务的接口时,可以使用本接口获取的IAM用户Token进行鉴权。但强烈推荐您使用AK/SK签名认证方式调用API,可以避免因缓存的Token失效导致的API调用失败的问题。 该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点。 接口使用导航: IAM用户获取Token 判断当前账号是华为账号还是华为云账号 华为账号获取Token 华为云账号获取Token 第三方系统用户获取Token Token有效期说明 获取Token常见问题 其他相关操作 IAM用户获取Token 无特殊要求,请按照请求参数说明获取Token。 判断当前账号是华为账号还是华为云账号 华为账号不支持直接获取账号Token,排查是否为华为账号请参见:怎么知道当前登录华为云使用的是“华为账号” 还是“华为云账号”? 华为账号获取Token 华为账号获取token请参见以下步骤:创建一个IAM用户,授予该用户必要的权限,使用创建的IAM用户,获取IAM用户Token。 华为云账号获取Token 无特殊要求,请按照请求参数说明获取Token。 第三方系统用户获取Token 如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系统会提示密码错误。请先在华为云的登录页面,通过“忘记密码”功能,设置华为云账号密码。 Token有效期说明 Token的有效期为24小时。建议进行缓存,避免频繁调用。使用Token前请确保Token离过期有足够的时间,防止调用API的过程中Token过期导致调用API失败。重新获取Token,不影响已有Token有效性。 如果在Token有效期内进行如下操作,当前Token最长30分钟失效。 删除/停用IAM用户。 修改IAM用户密码、访问密钥。 IAM用户权限发生变化(如账号欠费无法访问云服务、申请公测通过、IAM用户权限被修改等)。 使用Token调用云服务API时, 返回“The token must be updated”,则Token过期,需要客户端重新获取Token。 获取Token常见问题 用户名或密码错误:请排查输入的用户名和密码是否正确。用户名密码正确但是仍旧报错,请排查当前获取Token的账号是否为华为账号,华为账号不支持直接获取Token,请新建IAM用户并授权,使用IAM用户获取Token。 没有API访问权限:调用API前,请确保已开启编程访问。 其他相关操作 如果您开启了登录保护并设置登录保护为MFA验证,请参考获取IAM用户Token(使用密码+虚拟MFA)获取IAM用户Token。 如果需要获取具有Security Administrator权限的Token,请参见:如何获取Security Administrator权限的Token。 通过Postman获取用户Token示例请参见:如何通过Postman获取用户Token。 您还可以通过视频教程了解如何使用Token认证:IAM视频帮助 。
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 该字段内容填为“application/json;charset=utf8”。 表3 请求Body参数 参数 是否必选 参数类型 描述 auth 是 Object 认证信息。 表4 auth 参数 是否必选 参数类型 描述 identity 是 Object 认证参数。 scope 是 Object Token的使用范围,取值为project或domain,二选一即可。 说明: 如果您将scope设置为domain,该Token适用于全局级服务;如果将scope设置为project,该Token适用于项目级服务。 如果您将scope同时设置为project和domain,将以project参数为准,获取到项目级服务的Token。 如果您将scope置空,将获取到全局级服务的Token。建议您按需要填写Token使用范围。 表5 auth.identity 参数 是否必选 参数类型 描述 methods 是 Array of strings 认证方法,该字段内容为["password"]。 password 是 Object IAM用户密码认证信息。 说明: user.name和user.domain.name可以在界面控制台“我的凭证”中查看,具体获取方法请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。 该接口提供了锁定机制用于防止暴力破解,调用时,请确保用户名密码正确,输错一定次数(管理员可设置该规则,方法请参见:账号锁定策略)将被锁定。 表6 auth.identity.password 参数 是否必选 参数类型 描述 user 是 Object 需要获取Token的IAM用户信息。 表7 auth.identity.password.user 参数 是否必选 参数类型 描述 domain 是 Object IAM用户所属账号信息。了解账号与IAM用户的关系。 name 是 String IAM用户名。 password 是 String IAM用户的登录密码。 说明: 务必保证密码输入正确,避免获取Token失败。 如果您的华为云账号已升级为华为账号,将不支持获取账号Token,建议您为自己创建一个IAM用户,授予该用户必要的权限,获取IAM用户Token。 如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系统会提示密码错误。请在华为云的登录页面,通过“忘记密码”功能,设置华为云账号密码,并在password中输入新设置的密码。 表8 auth.identity.password.user.domain 参数 是否必选 参数类型 描述 name 是 String IAM用户所属账号名称,获取方式请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。 表9 auth.scope 参数 是否必选 参数类型 描述 domain 否 Object 取值为domain时,表示获取的Token可以作用于全局服务,全局服务不区分项目或区域,如OBS服务。如需了解服务作用范围,请参考系统权限。domain支持id和name,二选一即可,建议选择“domain_id”。 project 否 Object 取值为project时,表示获取的Token可以作用于项目级服务,仅能访问指定project下的资源,如E CS 服务。如需了解服务作用范围,请参考系统权限。project支持id和name,二选一即可。 表10 auth.scope.domain 参数 是否必选 参数类型 描述 id 否 String IAM用户所属账号ID,获取方式请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。当auth.scope选择了domain时,获取的Token可以作用于全局服务,id和name需要二选一。 name 否 String IAM用户所属账号名称,获取方式请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。当auth.scope选择了domain时,获取的Token可以作用于全局服务,id和name需要二选一。 表11 auth.scope.project 参数 是否必选 参数类型 描述 id 否 String 表示IAM用户所属账号的项目ID,获取方式请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。当auth.scope选择了project时,获取的Token可以作用于项目级服务,id和name需要二选一。每个区域的项目ID有所不同,需要根据业务所在的区域使用对应的项目ID。 name 否 String 表示IAM用户所属账号的项目名称,获取方式请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。当auth.scope选择了project时,获取的Token可以作用于项目级服务,id和name需要二选一。
-
响应示例 状态码为 201 时: 创建成功。 { "token" : { "expires_at" : "2018-03-13T03:00:01.168000Z", "methods" : [ "mapped" ], "issued_at" : "2018-03-12T03:00:01.168000Z", "user" : { "OS-FEDERATION" : { "identity_provider" : { "id" : "idptest" }, "protocol" : { "id" : "oidc" }, "groups" : [ { "name" : "admin", "id" : "45a8c8f..." } ] }, "domain" : { "id" : "063bb260a480...", "name" : "IAMDomain" }, "name" : "FederationUser", "id" : "suvmgvUZc4PaCOEc..." } } } 状态码为 400 时: 参数无效。 { "error" : { "code" : 400, "message" : "Request parameter 'idp id' is invalid.", "title" : "Bad Request" } } 状态码为 401 时: 认证失败。 { "error" : { "code" : 401, "message" : "The request you have made requires authentication.", "title" : "Unauthorized" } } 状态码为 403 时: 没有操作权限。 { "error" : { "code" : 403, "message" : "You are not authorized to perform the requested action.", "title" : "Forbidden" } } 状态码为 404 时: 未找到相应资源。 { "error" : { "code" : 404, "message" : "Could not find %(target)s: %(target_id)s.", "title" : "Not Found" } } 状态码为 500 时: 系统内部异常。 { "error" : { "code" : 500, "message" : "An unexpected error prevented the server from fulfilling your request.", "title" : "Internal Server Error" } }
-
响应参数 状态码为 201 时: 表3 响应Header参数 参数 参数类型 描述 X-Subject-Token String 签名后的Token。 表4 响应Body参数 参数 参数类型 描述 token object 获取的token详情。 表5 token 参数 参数类型 描述 expires_at String 过期时间。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 methods Array of strings token获取方式,联邦认证默认为mapped。 issued_at String 生成时间。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 user object 用户详情。 roles Array of objects 角色/策略详情。 catalog Array of objects catalog详情。 表6 token.user 参数 参数类型 描述 OS-FEDERATION object 联邦用户user详情。 domain object 租户详情。 id String 用户id。 name String 用户名。 表7 token.user.OS-FEDERATION 参数 参数类型 描述 identity_provider object 身份提供商详情。 protocol object 协议详情。 groups Array of objects 用户组详情。 表8 token.user.OS-FEDERATION.identity_provider 参数 参数类型 描述 id String 身份提供商id。 表9 token.user.OS-FEDERATION.identity_provider 参数 参数类型 描述 id String 协议id。 表10 token.user.OS-FEDERATION.groups 参数 参数类型 描述 id String 用户组id。 name String 用户组名。 表11 token.domain 参数 参数类型 描述 id String 租户id。 name String 租户名。 表12 token.roles 参数 参数类型 描述 id String 权限id。 name String 权限名。 表13 token.catalog 参数 参数类型 描述 endpoints Array of objects 终端节点。 id String 服务ID。 name String 服务名称。 type String 该接口所属服务。 表14 token.catalog.endpoints 参数 参数类型 描述 id String 终端节点ID。 interface String 接口类型,描述接口在该终端节点的可见性。值为“public”,表示该接口为公开接口。 region String 终端节点所属区域。 region_id String 终端节点所属区域ID。 url String 终端节点的URL。
-
响应示例 状态码为 201 时: 创建成功。 响应Header参数: X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB... 响应Body参数: { "token": { "expires_at": "2020-02-13T14:21:34.042000Z", "methods": [ "mapped" ], "issued_at": "2020-02-12T14:21:34.042000Z", "user": { "OS-FEDERATION": { "identity_provider": { "id": "ACME" }, "protocol": { "id": "saml" }, "groups": [ { "id": "06aa22601502cec4a23ac0084a74038f", "name": "admin" } ] }, "domain": { "name": "IAMDomain", "id": "06ba0970a097acc0f36c0086bb6cfe0" }, "name": "FederationUser", "id": "LdUTYSC7zmJVIic3yaCbLBXDxPAdDxLg" } } }
-
响应参数 表3 响应Header参数 参数 参数类型 描述 X-Subject-Token String 签名后的unscoped token。 表4 响应Body参数 参数 参数类型 描述 token Object 联邦认证的unscoped token信息。 表5 token 参数 参数类型 描述 issued_at String token产生时间。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 expires_at String token到期时间。 说明: UTC时间,格式为YYYY-MM-DDTHH:mm:ss.ssssssZ,日期和时间戳格式参照ISO-8601,如:2023-06-28T08:56:33.710000Z。 methods Array of strings 获取token的方式。 user Object 获取token的用户信息。 表6 token.user 参数 参数类型 描述 domain Object 用户所属账号信息。 id String 用户ID。 name String 用户名称。 OS-FEDERATION Object 联邦身份认证信息。 表7 token.user.domain 参数 参数类型 描述 name String 用户所属账号名。 id String 用户所属账号ID。 表8 token.user.OS-FEDERATION 参数 参数类型 描述 groups Array of objects 用户组信息列表。 identity_provider Object 身份提供商信息。 protocol Object 协议信息。 表9 token.user.OS-FEDERATION.groups 参数 参数类型 描述 id String 用户组ID。 name String 用户组名称。 表10 token.user.OS-FEDERATION.identity_provider 参数 参数类型 描述 id String 身份提供商ID。 表11 token.user.OS-FEDERATION.protocol 参数 参数类型 描述 id String 协议ID。
-
功能介绍 该接口可以用于通过IdP initiated的联邦认证方式获取unscoped token。 Unscoped token不能用来鉴权,若联邦用户需要使用token进行鉴权,请参考获取联邦认证scoped token获取scoped token。 该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点。 该接口支持在命令行侧调用,需要客户端使用IdP initiated的联邦认证方式获取SAMLResponse,并采用浏览器提交表单数据的方式,获取unscoped token。
-
请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 客户端必须使用浏览器提交表单数据的方式向服务端传SAMLResponse参数,故该字段需取值如下:application/x-www-form-urlencoded X-Idp-Id 是 String 身份提供商ID。 表2 请求formData参数 参数 是否必选 参数类型 描述 SAMLResponse 是 String 在IdP认证成功后返回的响应体。 SAMLResponse获取方式: 在浏览器的地址栏输入并跳转链接:https://idp.example.org/idp/profile/SAML2/Unsolicited/SSO?providerId=iam.example.com。 idp.example.org :IDPmetadata中的entityID; iam.example.com :SPmetadata中获取的entityID。 该链接可打开身份提供商登录页面,根据需要输入映射规则中的用户名(支持免密登录),单击登录,跳入认证页面后按F12,单击认证页面的accept。从下图所示的POST中获取SAMLResponse。 图1 获取SAMLResponse
-
集成步骤 轻量级WEB聊天控件可以快速高效的集成到您的页面,请您根据图1进行集成开发。 图1 集成开发步骤 完成开发前资源准备,获取登录信息,配置在线客服功能,请参见开发前准备。 开发token生成机制与token认证接口,提供给云客服。云客服在鉴权通过后,会将Token发回给第三方系统,由第三方系统确认是否为本系统发的请求,请参见开发token生成机制与认证验证接口。 华为方使用HTTPS传输协议确保信息传输通道安全,请第三方确保开发的鉴权功能具备“口令复杂度校验”、“防暴力破解”、“防DOS攻击”等安全防护能力。 引入相关依赖框架,构造请求参数请求thirdPartyClient.js和newThirdPartyClient.js ,将Token信息、租户ID、企业侧的用户ID、用户名称等信息返回云客服,请求鉴权,鉴权通过后可实现云客服网页聊天能力的轻量级接入,请参见开发集成页面。 测试与验证WEB聊天控件功能,通过客户端窗口发起在线聊天检查与座席聊天功能,请参见测试与验证。 父主题: 集成轻量级WEB聊天控件(引入Token认证方式)
-
步骤说明 Client调用公有云系统提供的“通过SP initiated方式获取联邦token”接口。 公有云系统根据URL中的用户及IdP信息查找Metadata文件,发送SAML Request,请求经过中间媒介Client。 Client对SAML Request进行重新封装后转发SAML Request给IdP。 用户输入用户名和密码完成身份认证。 用户认证成功后,IdP构建携带用户身份信息的断言发送SAML Response,请求经过中间媒介Client。 Client对SAML Response进行重新封装后转发SAML Response给公有云。 公有云对断言进行校验和认证,并根据用户在身份提供商配置的身份转换规则生成临时访问凭证。 用户根据分配的权限访问公有云资源。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格