Как мне использовать мою учетную запись службы Gcloud, чтобы правильно запустить мой скрипт? - PullRequest
1 голос
/ 07 мая 2019

Пожалуйста, прости меня, если мой пост неаккуратный, это мой первый раз в переполнении стека.

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

Мое сообщение об ошибке: «ReferenceError:« OAuth2 »не определено».

Это основной код, который мне нужен для работы. Я могу сделать это только с помощью электронной почты моего владельца, но мне нужно перебрать все учетные записи домена.

Когда я пытаюсь перебрать все учетные записи, я получаю «API-вызов gmail.users.settings.getImap завершился ошибкой: делегирование отклонено для name@example.com»

function listAllUsers() {
  var pageToken;
  var page;

  do {
    page = AdminDirectory.Users.list({
      domain: 'example.com',
      orderBy: 'givenName',
      maxResults: 100,
      pageToken: pageToken
    });
    var users = page.users;
    if (users) {
      for (var i = 0; i < users.length; i++) {
        var user = users[i];
        Logger.log('%s (%s)', user.name.fullName, user.primaryEmail);

 var response =
    Gmail.Users.Settings.getImap (user.primaryEmail);
Logger.log('%s', response );

      }
    } else {
      Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
}

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

«ReferenceError:« OAuth2 »не определено.»

Я даже на правильном пути?

var JSON = {
    "private_key": "Your Private Key",
    "client_email": "serviceacount@example.iam.gserviceaccount.com",
    "client_id": "1234567890",
    "user_email": "name@example.com"
};

function getOAuthService(user) {
    return OAuth2.createService("Service Account")
        .setTokenUrl('https://accounts.google.com/o/oauth2/token')
        .setPrivateKey(JSON.private_key)
        .setIssuer(JSON.client_email)
        .setSubject(JSON.user_email)
        .setPropertyStore(PropertiesService.getScriptProperties())
        .setParam('access_type', 'offline')
        .setScope('https://www.googleapis.com/auth/drive');
}

function getUserFiles() {
    var service = getOAuthService();
    service.reset();
    if (service.hasAccess()) {
        var url = 'https://www.googleapis.com/drive/v2/files?pageSize=1';
        var response = UrlFetchApp.fetch(url, {
            headers: {
                Authorization: 'Bearer ' + service.getAccessToken()
            }
        });
        Logger.log(response.getContentText());
    }
}

function reset() {
    var service = getOAuthService();
    service.reset();
}
...