在 name/description 中创建具有特殊字符的组时获得 400 和 "Invalid Input: groupDescription"

Getting a 400 and "Invalid Input: groupDescription" when creating a group with special characters in the name/description

我已经尝试使用 java 客户端版本 directory_v1-rev20201215-1.31.0 以及直接 REST 调用,但我仍然收到 400 错误。我没有尝试过特殊字符的完整排列,但我确信等号在组的名称或描述中会失败。我需要做一个简单的 escaping/encoding,但我确实没有找到提到它的文档部分! 我也知道使用 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;
   }

我也尝试过各种其他转义和编码机制,但返回组时所有内容仍保持编码状态。所以,显然我还没有找到合适的。任何 thoughts/tips?

更新 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
}

克里斯

Name guidelines for groups

  • 向 Google Workspace 或其他 Google 云帐户添加群组名称和群组描述时,请遵循以下准则

群组名称和描述

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

使用 groups.insert().

创建组时,此准则似乎也适用

我能够使用上述无效字符 (<,>,=) 以外的特殊字符创建群组。

示例响应正文:

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

管理控制台: