node.js - 如何使用 google-api-nodejs-client 获取群组成员列表

标签 node.js google-api google-cloud-functions google-api-nodejs-client

目标

使用 googleapis 获取群组成员列表。 Google's documentation显示这个:

获取 https://www.googleapis.com/admin/directory/v1/groups/groupKey/members

问题

如何使用 directory.groups.get.hasMembers 或其他来完成此操作?我不确定如何或在哪里向请求添加成员。

directory.groups.get({
    auth: jwtClient,
    domain: "mydomain.com",
    groupKey: "mygroup@mydomain.com",
},

什么有效

在这里我获取有关成员(member)资格的信息,但不是成员(member)列表

exports.getGroupsMemberships = function (jwtClient) {
    return new Promise((resolve, reject) => {
        jwtClient.authorize(err => {
            if (err) reject(err);
            else resolve();
        });
    }).then(() => {
        return new Promise((resolve, reject) => {
            directory.groups.get({
                auth: jwtClient,
                domain: "mydomain.com",
                groupKey: "mygroup@mydomain.com",
            },
            function (err, resp) {
                if (err) reject(err);
                else resolve(resp);
            });
        });
    });
};

返回

  "gsuiteGroupsMemberships : { kind: 'admin#directory#group',
  id: 'xxx...222',
  etag: '"TN3...Dw"',
  email: 'mygroup@mydomain.com',
  name: 'My Group',
  directMembersCount: '3',
  description: 'Use this email group to contact My Group.',
  adminCreated: false,
  nonEditableAliases: [ 'mygroup@mydomain.com.test-google-a.com' ] }"  

当我使用 Try This API 在浏览器中,我确实获得了成员列表,即电子邮件、角色等。

最佳答案

为此,您使用members 资源中的列表,而不是groups

exports.getGroupsMemberships = function (jwtClient) {
    return new Promise((resolve, reject) => {
        jwtClient.authorize(err => {
            if (err) reject(err);
            else resolve();
        });
    }).then(() => {
        return new Promise((resolve, reject) => {
            directory.members.list({
                auth: jwtClient,
                groupKey: "mygroup@mydomain.com",
            },
            function (err, resp) {
                if (err) reject(err);
                else resolve(resp);
            });
        });
    });
};

如果您想要群组元数据成员列表,您需要进行两次调用:

exports.getGroupDataAndMembers = function (jwtClient) {
    return new Promise((resolve, reject) => {
        jwtClient.authorize(err => {
            if (err) reject(err);
            else resolve();
        });
    }).then(() => {
        return new Promise((resolve, reject) => {
            directory.groups.get({
                auth: jwtClient,
                domain: "mydomain.com",
                groupKey: "mygroup@mydomain.com",
            },
            function (err, resp) {
                if (err) reject(err);
                else resolve(resp);
            });
        });
    }).then((groupMetaCall) => {
        return new Promise((resolve, reject) => {
            directory.members.list({
                auth: jwtClient,
                groupKey: "mygroup@mydomain.com",
            },
            function (err, resp) {
                if (err) reject(err);
                else {
                    groupMetaCall.data.members = resp.data.members;
                    resolve(groupMetaCall);
                }
            });
        });
    });
};

您提供的 Try this API 用于成员资源的获取端点。它返回有关群组某个成员的信息。

这是members.list的文档:
https://developers.google.com/admin-sdk/directory/v1/reference/members/list

关于node.js - 如何使用 google-api-nodejs-client 获取群组成员列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997342/

相关文章:

javascript - 如何使用 Javascript 或 Node.js 检查 Windows 操作系统更新状态?

c# - 如何在 C# 中使用 google OAuth2 后获取电子邮件?

firebase - 功能部署失败: yarn: not found

javascript - Firebase 函数,admin.database().ref(...).get() 不是函数

actionscript-3 - 从本地环境上的 flash 套接字连接到 TCP 服务器

node.js - 序列化是传输还是转换的过程?

php - 检查表是否存在于电子表格 Google 电子表格 API PHP 中

Xcode 天气应用

ios - 我应该自己保存 firebase token 还是在注册远程通知时自动完成?

javascript - node.js 白板应用程序的客户端或服务器端 HTML5 Canvas 渲染?