В API каталогов Google, как мне добавить пользователя с помощью JavaScript?

У меня работает быстрый запуск Javascript API каталогов Google. В этой части кода перечислены первые 10 пользователей в каталоге:

      gapi.client.directory.users.list({
        'customer': 'my_customer',
        'maxResults': 10,
        'orderBy': 'email'
      }).then(function(response) {
        var users = response.result.users;
        appendPre('Users:');

        appendPre('test')

        if (users && users.length > 0) {
          for (i = 0; i < users.length; i++) {
            var user = users[i];
            appendPre('-' + user.primaryEmail + ' (' + user.name.fullName + ')');
          }
        } else {
          appendPre('No users found.');
        }
      });

Я хочу добавить пользователя в каталог. Похоже, это делается с помощью пользователей: вставить. Поэтому после удаления части "только для чтения" из области действия я заменяю приведенный выше фрагмент кода следующим:

var user = {
        "password": "Testpass123",
        "primaryEmail": "albert.smith@mydomain.com",
        "name": {
          "givenName": "albert",
          "familyName": "smith"
        }
      };
      
gapi.client.directory.users.insert(user);

Очевидно, что это не работает, но я не уверен, что мне не хватает. На пользователях есть инструмент "Попробуйте этот API": вставьте справочную страницу, и когда я добавляю свойства "user" в поле "тело запроса", он добавляет пользователя.

Я не уверен, как сделать тело запроса, хотя, и я не могу найти решение в документации. Метод users: list не нуждается в теле запроса. Я попробовал что-то вроде этого, что тоже не сработало:

gapi.client.request({
         'path': 'https://www.googleapis.com/admin/directory/v1/users',
         'method': 'POST',
         'body': user
       });

Надеясь, что кто-то может дать мне хотя бы общее представление о том, что делать. Я довольно новичок в этом.

3 ответа

Попробуйте обернуть пользовательский объект в объект ресурса, например:

var user = {
  resource: {
   "password": "Testpass123",
   "primaryEmail": "albert.smith@mydomain.com",
   "name": {
      "givenName": "albert",
      "familyName": "smith"
    }
  }
}

Я не могу найти ссылку на это больше, поэтому, может быть, кто-то еще может опубликовать, но это работает для меня.

Попробуйте эти фиктивные данные, полученные из Admin SDK Apps Script Add user и замените их правильными данными:

тело запроса образца:

var user = {
    primaryEmail: 'liz@example.com',
    name: {
      givenName: 'Elizabeth',
      familyName: 'Smith'
    },
    // Generate a random password string.
    password: Math.random().toString(36)
  };

На основе https://developers.google.com/admin-sdk/directory/reference/rest/v1/users/insert :

      function execute() {
            return gapi.client.directory.users.insert({
                "resource": {
                "name": {
                "familyName": "Shmoger",
                "givenName": "Joey"
                },
                "password": "ShmoeyJoey!",
                "primaryEmail": "shmogerjoe@grower.com"
            }
            })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
        }
Другие вопросы по тегам