首页 > 解决方案 > 创建名称/描述中包含特殊字符的组时出现 400 和“无效输入:groupDescription”

问题描述

我已尝试使用 java 客户端、版本directory_v1-rev20201215-1.31.0以及直接 REST 调用,但我继续收到 400 错误。我没有尝试过特殊字符的完整排列,但我确信等号在组的名称或描述中会失败。我必须做一个简单的转义/编码,但我肯定还没有找到提到它的文档部分!我也知道使用 Google UI 创建组是可行的,因此 IT 正在做正确的事情来允许特殊字符通过。

这是一些非常精简的代码,以防万一:

   public Group createGroup() {
      Directory directoryService = null;

      try {
         final NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
         final JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

         GoogleCredentials credentials;
         try (FileInputStream serviceAccountStream = new FileInputStream(CREDENTIALS_FILE_PATH)) {
            ServiceAccountCredentials saCredentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
            credentials = saCredentials.createDelegated(IMPERSONATION_ACCOUNT).createScoped(DirectoryScopes.ADMIN_DIRECTORY_GROUP);
         }

         directoryService = new Directory.Builder(httpTransport, jsonFactory, new HttpCredentialsAdapter(credentials))
               .build();

      } catch (GeneralSecurityException | IOException e) {
         log.error("Unable to initialize service", e);
      }
      
      Group group = null;
      try {
        String groupText = "ASDF = QWERTY";
        String email = "foo@bar.com";

         Group newGroup = new Group();
         newGroup.setName(groupText);
         newGroup.setDescription(groupText);
         newGroup.setEmail(email);

         group = directoryService.groups().insert(newGroup).execute();
      } catch (IOException e) {
         log.error("uh oh", e);
      }
      return group;
   }

我还尝试了各种其他转义和编码机制,但是在返回组时,一切仍然保持编码。所以,显然我还没有找到合适的。有什么想法/提示吗?

更新 1: 响应下面的@ron-m,我可以通过管理界面创建一个包含这些特殊字符的组:

{
  "kind": "admin#directory#group",
  "id": "01fob9te1iak5t4",
  "etag": "\"TMv00O2ISW7vEPqlqGLVmYmFaDFMCNc2QQc0SLgd5dQ/i_JUX6L9OJm-W4jcyL1hB1TApGg\"",
  "email": "__-cwm--test--group--characters-iu-group@XXXXXXXXX",
  "name": "__ CWM < test = group > characters",
  "directMembersCount": "1",
  "description": "__ CWM < test = group > characters, but in the description",
  "adminCreated": false
}

克里斯

标签: google-admin-sdk

解决方案


组名称指南

  • 向 G Suite 或其他 Google Cloud 帐户添加群组名称和群组说明时,请遵循以下准则

组名和描述

  • 名称最长可达 73 个字符。
  • 使用易于识别小组目的的名称。
  • 对于在管理控制台中创建的群组,名称和说明不能包含等号 (=)方括号 (<,>)

在使用groups.insert()创建组时,该指南似乎也适用。

除了提到的无效字符(<、>、=)之外,我能够创建一个具有特殊字符的组。

示例响应正文:

{
  "kind": "admin#directory#group",
  "id": "sample id",
  "etag": "sample tag"",
  "email": "sample@example.com",
  "name": "ASDF, QWERTY",
  "description": "",
  "adminCreated": true
}

管理控制台:

在此处输入图像描述


推荐阅读