如果我的帖子草率,请原谅我,这是我第一次参加Stack Overflow。
我编写了一个Google API脚本来记录域中所有用户的名称,电子邮件和IMAP状态。我创建了一个具有所有者特权的服务帐户,以便获得访问数据的权限。看来我没有配置我的服务帐户凭据以正常工作。
我的错误消息是“ ReferenceError:未定义“ OAuth2”。”
这是我需要工作的主要代码。我可以只用所有者的电子邮件来做到这一点,但是我需要循环浏览域中的所有帐户。
当我尝试遍历所有帐户时,我收到“对gmail.users.settings.getImap的API调用失败,出现错误:拒绝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();
}