智能客服
你问我答,随时在线为你解决问题
此接口用于将准备好的用户信息导入到认证服务的用户数据中。
| 承载协议 | 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 |
| 数据格式 | 请求:Content-Type: application/json 响应:Content-Type: application/json |
本接口支持使用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) | 参数类型 | 参数说明 |
|---|---|---|---|
| users | M | List<ImportUserUserByServer> | 第三方的认证信息。 |
ImportUserUserByServer
| 参数名称 | 必选(M)/可选(O) | 类型 | 参数说明 |
|---|---|---|---|
| importUid | M | String(1024) | 用户ID,唯一标识。 |
| displayName | O | String(1024) | 用户昵称。 |
| photoUrl | O | String(2048) | 头像地址。 |
| | 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 | 认证方式类型:
说明 *星号标记的账号类型仅在海外站点支持,当您选择数据处理位置为德国、新加坡或俄罗斯时可以使用这些认证方式。 |
| providerUid | M | String(1024) | 用户唯一标识,由三方系统分配。 |
| photoUrl | O | String(2048) | 头像地址。 |
| displayName | O | String(1024) | 用户昵称。 |
| openId | O | String(1024) | 发送者唯一标识,例如微信openId。 |
- POST /api/auth-service/v1/server/user:import
- Content-Type: application/json
- productId: 99************83
- client_id: 680************560
- Authorization: Bearer ***
- Host: connect-api.cloud.huawei.com
- {
- "users": [{
- "importUid": "99038248123456789",
- "displayName": "HelloWorld",
- "photoUrl": "https://developer.huawei.com/consumer/xxx.png",
- "email": "xxxx@huawei.com",
- "emailVerified": true,
- "phone": "+86-18260099999",
- "createTime": "1627027017000",
- "lastLoginTime": "1627027017000",
- "providers": [{
- "provider": "4",
- "providerUid": "9903824860586577777",
- "photoUrl": "https://weixin.qq.com/xxx.png",
- "displayName": "HelloWorld",
- "openId": "123456"
- }
- ]
- }
- ]
- }
| 参数 | 必选(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。 |
- {
- "ret": {
- "code": 0,
- "msg": "OK"
- },
- "importedUsers": [{
- "importUid": "99038248123456789",
- "uid": "685584833111393408"
- }
- ]
- }
- /**
- * 导入用户
- *
- * @param token access_token, 获取方式见请求参数说明。
- * @param productId 项目ID, 获取方式见请求参数说明。
- * @param clientId 客户端ID,获取方式见请求参数说明。
- */
- public static void importUserServer(String token, String productId, String clientId) {
- HttpPost post = null;
- CloseableHttpClient httpClient = null;
- try {
- /** 新建POST请求 */
- post = new HttpPost("https://connect-api.cloud.huawei.com/api/auth-service/v1/server/user:import");
-
- /** 设置Header认证信息 */
- post.setHeader("productId", productId);
- post.setHeader("client_id", clientId);
- post.setHeader("Authorization", "Bearer " + token);
-
- /** 组装请求Body,使用JSON格式携带信息 */
- Map<String, Object> map = new HashMap<>();
- List<ImportUserUserByServer> list = new ArrayList<>();
- ImportUserUserByServer user = buildImportUser();
- list.add(user);
- map.put("users", list);
-
- String reqStr = JSON.toJSONString(map);
- StringEntity entity = new StringEntity(reqStr, Charset.forName("UTF-8"));
- entity.setContentEncoding("UTF-8");
- entity.setContentType("application/json");
- /** 设置请求Body */
- post.setEntity(entity);
- /** 发送请求 */
- httpClient = HttpClients.createDefault();
- HttpResponse response = httpClient.execute(post);
- /** 处理返回参数 */
- int statusCode = response.getStatusLine().getStatusCode();
- if (statusCode == HttpStatus.SC_OK) {
- BufferedReader br =
- new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Consts.UTF_8));
- String result = br.readLine();
- JSONObject object = JSON.parseObject(result);
- JSONArray jsonArr = object.getJSONArray("importedUsers");
- for (int i = 0; i < jsonArr.size(); i++) {
- JSONObject jsonObject = jsonArr.getJSONObject(i);
- System.out.println("uid:" + jsonObject.getString("uid"));
- System.out.println("importUid:" + jsonObject.getString("importUid"));
- }
- }
- } catch (Exception e) {
- } finally {
- try {
- if (Objects.nonNull(post)) {
- post.releaseConnection();
- }
- if (Objects.nonNull(httpClient)) {
- httpClient.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- private static ImportUserUserByServer buildImportUser() {
- ImportUserUserByServer importUser = new ImportUserUserByServer();
- /** 如果是从一个项目导出再导入,导出的数据可能没有importUid字段。可以将导出的数据的uid字段设置到importUid里面。 */
- importUser.setImportUid("99038248123456789");
- importUser.setDisplayName("HelloWorld");
- importUser.setPhotoUrl("https://developer.huawei.com/consumer/xxx.png");
- importUser.setEmail("xxxx@huawei.com");
- importUser.setEmailVerified(true);
- importUser.setPhone("+86-18260099999");
- importUser.setCreateTime(String.valueOf(System.currentTimeMillis()));
- importUser.setLastLoginTime(String.valueOf(System.currentTimeMillis()));
- List<ProviderByServer> providers = new ArrayList<>();
- ProviderByServer provider = new ProviderByServer();
- // 需要提前开启认证服务和对应的认证方式。示例代码中的4表示的是微信。
- provider.setProvider("4");
- provider.setProviderUid("9903824860586577777");
- provider.setPhotoUrl("https://weixin.qq.com/xxx.png");
- provider.setDisplayName("HelloWorld");
- provider.setOpenId("12345");
- providers.add(provider);
- importUser.setProviders(providers);
-
- return importUser;
- }