Я просмотрел документацию, но все еще немного запутался. Прямо сейчас мне нужно добавить их индивидуально (синхронизировать со списком сотрудников в нашем приложении), а еженедельная синхронизация может включать тысячи пользователей, что очень медленно для каждого пользователя в отдельности.
Мой текущий код:
Код: Выделить всё
import { Auth, admin_directory_v1 as directoryV1 } from 'googleapis';
class GoogleGroupsService {
private async getAdminApi (): Promise {
try {
const scopes = [
'https://www.googleapis.com/auth/admin.directory.group',
'https://www.googleapis.com/auth/admin.directory.group.member'
];
const jwtClient = new Auth.JWT(
this.keyConfig.clientEmail,
undefined,
this.keyConfig.privateKey.replace(/\\n/g, '\n'),
scopes
);
const adminApi = new Admin({
auth: jwtClient
});
await jwtClient.authorize();
return adminApi;
} catch (error) {
logger.error('Service account authentication failure', error);
throw new Error('Service account authentication failure');
}
}
async addEmailToGroup (email: string, groupKey: string, role: 'OWNER' | 'MEMBER' = 'MEMBER', syncLogger = logger) {
if (!this.enabled) {
logger.warn('Google Group service is disabled');
return;
}
syncLogger.debug(`Adding ${email} to ${groupKey}, with role ${role}`);
const adminApi = await this.getAdminApi();
await adminApi.members.insert({
groupKey,
requestBody: {
email,
role,
type: 'USER'
}
});
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -admin-api
Мобильная версия