文档管理中心
API参考认证服务ServerREST API导入用户

导入用户

功能介绍

此接口用于将准备好的用户信息导入到认证服务的用户数据中。

使用约束

  • 接口调用者的角色:管理员、APP管理员、开发。
  • 接口调用次数限制:20个请求/client_id/秒

接口原型

承载协议

HTTPS POST

接口方向

开发者服务器->华为认证服务

接口URL

https://{domain}/api/auth-service/v1/server/user:import

中国站点的domain:connect-api.cloud.huawei.com

德国站点的domain:connect-api-dre.cloud.huawei.com

新加坡站点的domain:connect-api-dra.cloud.huawei.com

俄罗斯站点的domain:connect-api-drru.cloud.huawei.com

注意

调用获取Token接口时使用的域名必须与本接口域名保持一致,例如本接口使用“connect-api-dre.cloud.huawei.com”,则调用获取Token接口必须使用“https://connect-api-dre.cloud.huawei.com/api/oauth2/v1/token”。

数据格式

请求:Content-Type: application/json

响应:Content-Type: application/json

请求参数

Header

说明

本接口支持使用Service Account方式和API客户端方式,二者区别请参见获取服务端API授权

Service Account方式

展开

参数名称

必选(M)/可选(O)

类型

参数说明

productId

M

String

项目ID,查询方法可参见查询项目ID

Authorization

M

String

认证信息,格式为“Authorization: Bearer ${JWT}”。JWT为通过Service Account方式获取授权中获取的鉴权令牌。

API客户端方式

展开

参数名称

必选(M)/可选(O)

类型

参数说明

client_id

M

String

客户端ID,获取方法参考创建API客户端

productId

M

String

项目ID,查询方法可参见查询项目ID

Authorization

M

String

认证信息,格式为“Authorization: Bearer ${access_token}”。access_token为获取Token中获取的access_token。

Body

展开

参数名称

必选(M)/可选(O)

参数类型

参数说明

users

M

List<ImportUserUserByServer>

第三方的认证信息。

ImportUserUserByServer

展开

参数名称

必选(M)/可选(O)

类型

参数说明

importUid

M

String(1024)

用户ID,唯一标识。

displayName

O

String(1024)

用户昵称。

photoUrl

O

String(2048)

头像地址。

email

O

String(512)

用户邮箱地址。

第三方的认证信息providers中的providerId为12的时候不能为空。

emailVerified

O

Boolean

邮箱是否需要验证,值为true或者false。

第三方的认证信息providers中的providerId为12的时候不能为空。

phone

O

String(32)

手机号。格式: +国家码-手机号,示例+86-18260096275。

第三方的认证信息providers中的providerId为11的时候不能为空。

createTime

M

String(20)

创建时间,距离1970年1月1日毫秒数。

lastLoginTime

O

String(20)

上次登入时间,距离1970年1月1日的毫秒数。

passwordHash

O

String(8192)

明文密码经过PBKDF2WithSHA256后的结果,迭代次数10000,盐值对应passwordSalt。

passwordSalt

O

String(8192)

密码算法的盐值。

providers

M

List<ProviderByServer>(32)

第三方的认证信息。

ProviderByServer

展开

参数名称

必选(M)/可选(O)

类型

参数说明

provider

M

String

认证方式类型:

  • 0:匿名账号
  • 1:华为账号
  • 2: FACEBOOK*
  • 3. TWITTER*
  • 4:微信
  • 5:华为游戏
  • 6:QQ
  • 7:微博
  • 8:GOOGLE*
  • 9: GOOGLE_PLAY_GAME*
  • 10:自建账号
  • 11:手机
  • 12:邮箱
  • 13:苹果账号
  • 18:支付宝账号
说明

*星号标记的账号类型仅在海外站点支持,当您选择数据处理位置为德国、新加坡或俄罗斯时可以使用这些认证方式。

providerUid

M

String(1024)

用户唯一标识,由三方系统分配。

photoUrl

O

String(2048)

头像地址。

displayName

O

String(1024)

用户昵称。

openId

O

String(1024)

发送者唯一标识,例如微信openId。

请求示例

收起
自动换行
深色代码主题
复制
  1. POST /api/auth-service/v1/server/user:import
  2. Content-Type: application/json
  3. productId: 99************83
  4. client_id: 680************560
  5. Authorization: Bearer ***
  6. Host: connect-api.cloud.huawei.com
  7. {
  8. "users": [{
  9. "importUid": "99038248123456789",
  10. "displayName": "HelloWorld",
  11. "photoUrl": "https://developer.huawei.com/consumer/xxx.png",
  12. "email": "xxxx@huawei.com",
  13. "emailVerified": true,
  14. "phone": "+86-18260099999",
  15. "createTime": "1627027017000",
  16. "lastLoginTime": "1627027017000",
  17. "providers": [{
  18. "provider": "4",
  19. "providerUid": "9903824860586577777",
  20. "photoUrl": "https://weixin.qq.com/xxx.png",
  21. "displayName": "HelloWorld",
  22. "openId": "123456"
  23. }
  24. ]
  25. }
  26. ]
  27. }

响应参数

展开

参数

必选(M)/可选(O)

参数类型

描述

ret

M

String(100)

包含返回码及描述信息的JSON字符串,格式为{"code":retcode, "msg": "description"},retcode为返回码,description为返回码描述信息。返回码请参见错误码

importedUsers

O

String

JSONArray字符串,格式为[{"importUid": "string", "uid": "string"}],importUid为入参里面的importUid,uid为认证服务新生成的用户ID。

响应示例

收起
自动换行
深色代码主题
复制
  1. {
  2. "ret": {
  3. "code": 0,
  4. "msg": "OK"
  5. },
  6. "importedUsers": [{
  7. "importUid": "99038248123456789",
  8. "uid": "685584833111393408"
  9. }
  10. ]
  11. }

调用示例

Java
收起
自动换行
深色代码主题
复制
  1. /**
  2. * 导入用户
  3. *
  4. * @param token access_token, 获取方式见请求参数说明。
  5. * @param productId 项目ID, 获取方式见请求参数说明。
  6. * @param clientId 客户端ID,获取方式见请求参数说明。
  7. */
  8. public static void importUserServer(String token, String productId, String clientId) {
  9. HttpPost post = null;
  10. CloseableHttpClient httpClient = null;
  11. try {
  12. /** 新建POST请求 */
  13. post = new HttpPost("https://connect-api.cloud.huawei.com/api/auth-service/v1/server/user:import");
  14. /** 设置Header认证信息 */
  15. post.setHeader("productId", productId);
  16. post.setHeader("client_id", clientId);
  17. post.setHeader("Authorization", "Bearer " + token);
  18. /** 组装请求Body,使用JSON格式携带信息 */
  19. Map<String, Object> map = new HashMap<>();
  20. List<ImportUserUserByServer> list = new ArrayList<>();
  21. ImportUserUserByServer user = buildImportUser();
  22. list.add(user);
  23. map.put("users", list);
  24. String reqStr = JSON.toJSONString(map);
  25. StringEntity entity = new StringEntity(reqStr, Charset.forName("UTF-8"));
  26. entity.setContentEncoding("UTF-8");
  27. entity.setContentType("application/json");
  28. /** 设置请求Body */
  29. post.setEntity(entity);
  30. /** 发送请求 */
  31. httpClient = HttpClients.createDefault();
  32. HttpResponse response = httpClient.execute(post);
  33. /** 处理返回参数 */
  34. int statusCode = response.getStatusLine().getStatusCode();
  35. if (statusCode == HttpStatus.SC_OK) {
  36. BufferedReader br =
  37. new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Consts.UTF_8));
  38. String result = br.readLine();
  39. JSONObject object = JSON.parseObject(result);
  40. JSONArray jsonArr = object.getJSONArray("importedUsers");
  41. for (int i = 0; i < jsonArr.size(); i++) {
  42. JSONObject jsonObject = jsonArr.getJSONObject(i);
  43. System.out.println("uid:" + jsonObject.getString("uid"));
  44. System.out.println("importUid:" + jsonObject.getString("importUid"));
  45. }
  46. }
  47. } catch (Exception e) {
  48. } finally {
  49. try {
  50. if (Objects.nonNull(post)) {
  51. post.releaseConnection();
  52. }
  53. if (Objects.nonNull(httpClient)) {
  54. httpClient.close();
  55. }
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. }
  61. private static ImportUserUserByServer buildImportUser() {
  62. ImportUserUserByServer importUser = new ImportUserUserByServer();
  63. /** 如果是从一个项目导出再导入,导出的数据可能没有importUid字段。可以将导出的数据的uid字段设置到importUid里面。 */
  64. importUser.setImportUid("99038248123456789");
  65. importUser.setDisplayName("HelloWorld");
  66. importUser.setPhotoUrl("https://developer.huawei.com/consumer/xxx.png");
  67. importUser.setEmail("xxxx@huawei.com");
  68. importUser.setEmailVerified(true);
  69. importUser.setPhone("+86-18260099999");
  70. importUser.setCreateTime(String.valueOf(System.currentTimeMillis()));
  71. importUser.setLastLoginTime(String.valueOf(System.currentTimeMillis()));
  72. List<ProviderByServer> providers = new ArrayList<>();
  73. ProviderByServer provider = new ProviderByServer();
  74. // 需要提前开启认证服务和对应的认证方式。示例代码中的4表示的是微信。
  75. provider.setProvider("4");
  76. provider.setProviderUid("9903824860586577777");
  77. provider.setPhotoUrl("https://weixin.qq.com/xxx.png");
  78. provider.setDisplayName("HelloWorld");
  79. provider.setOpenId("12345");
  80. providers.add(provider);
  81. importUser.setProviders(providers);
  82. return importUser;
  83. }
在 API参考 中进行搜索
请输入您想要搜索的关键词