Dịch vụ Nhóm Cloud Identity nâng cao

Dịch vụ Nhóm danh tính trên đám mây (CIG) nâng cao cho phép bạn sử dụng API CIG trong Apps Script.

Tài liệu tham khảo

Để biết thông tin chi tiết về dịch vụ này, hãy xem tài liệu tham khảo về API CIG. Giống như tất cả các dịch vụ nâng cao trong Apps Script, dịch vụ CIG nâng cao sử dụng các đối tượng, phương thức và tham số giống như API công khai. Để biết thêm thông tin, hãy xem phần Cách xác định chữ ký phương thức.

Mã mẫu

Các hàm trợ giúp sau đây sử dụng phiên bản v1 của API.

Tạo Nhóm

Để tạo một Nhóm Google, hãy gọi groups.create bằng một thực thể của tài nguyên nhóm mới. Phiên bản nhóm phải bao gồm groupKey, parentlabel được đặt thành cloudidentity.googleapis.com/groups.discussion_forum. Bạn cũng cần đặt tham số initialGroupConfig để xác định chủ sở hữu ban đầu của nhóm. Bạn có thể sử dụng các giá trị sau cho tham số này:

WITH_INITIAL_OWNER: Đặt người gửi yêu cầu làm chủ sở hữu của nhóm.

EMPTY: Tạo một nhóm không có chủ sở hữu ban đầu. Bạn chỉ có thể sử dụng giá trị này nếu bạn là Quản trị viên cấp cao của Google Workspace hoặc Quản trị viên của Groups. Để biết thêm thông tin về các vai trò trong Google Workspace, hãy xem các vai trò quản trị viên tạo sẵn.

Ví dụ sau đây cho biết cách tạo một nhóm để người dùng là chủ sở hữu của nhóm đó:

const groups = CloudIdentityGroups.Groups;

function createGroup(groupId, parentId, displayName) {
  const groupKey = { id: groupId };
  const group = {
    parent: "customerId/" + parentId,
    displayName: displayName,
    groupKey: groupKey,
    // Set the label to specify creation of a Google Group.
    labels: { "cloudidentity.googleapis.com/groups.discussion_forum": "" },
  };
  const optionalArgs = { initialGroupConfig: "WITH_INITIAL_OWNER" };

  try {
    const response = groups.create(group, optionalArgs);
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

Tìm kiếm nhóm

Để tìm kiếm một Google Group, hãy gọi groups.search bằng một chuỗi truy vấn. Để tìm kiếm tất cả các nhóm, hãy cung cấp label cloudidentity.googleapis.com/groups.discussion_forum.

const groups = CloudIdentityGroups.Groups;

function searchGroup(customer_id) {
  const search_query = `parent=='customerId/${customer_id}' && 'cloudidentity.googleapis.com/groups.discussion_forum' in labels`;
  const search_group_request = groups.search({ query: search_query });
  console.log(JSON.stringify(search_group_request));
}

Thêm gói thành viên vào nhóm

Sau khi tạo một nhóm, bạn có thể tạo gói thành viên cho nhóm đó. Phương thức này yêu cầu một tài nguyên membership và chuỗi name tài nguyên của thành phần mẹ. Bạn có thể lấy giá trị trước đó bằng cách truy vấn nhóm thông qua phương thức lookup.

Phương thức trợ giúp sau đây cho thấy ví dụ về cách thêm gói thành viên vào một nhóm. expiryDetail là trường không bắt buộc mà bạn có thể thêm để đặt ngày hết hạn cho gói thành viên. Giá trị của preferredMemberKey là địa chỉ email của thành viên.

const groups = CloudIdentityGroups.Groups;

function createMembership(namespace, groupId, memberKey) {
  try {
    // Given a group ID and namespace, retrieve the ID for parent group
    const groupLookupResponse = groups.lookup({
      'groupKey.id': groupId,
      'groupKey.namespace': namespace
    });
    const groupName = groupLookupResponse.name;

    // Create a membership object with a memberKey and a single role of type MEMBER
    const membership = {
      preferredMemberKey: { id: memberKey },
      roles: [
        {
          name: "MEMBER",
          expiryDetail: {
            expireTime: "2025-10-02T15:01:23Z",
          },
        },
      ],
    };

    // Create a membership using the ID for the parent group and a membership object
    const response = groups.Memberships.create(membership, groupName);
    console.log(JSON.stringify(response));
  } catch (e) {
    console.error(e);
  }
}

Nhận gói thành viên từ thành viên

Sử dụng phương thức groups.memberships.searchDirectGroups để tìm thành phần mẹ trực tiếp của một thành phần.

Phương thức trợ giúp sau đây cho thấy ví dụ về cách lặp lại các gói thành viên trực tiếp của một thành viên nhất định.

const groups = CloudIdentityGroups.Groups;

 function searchMemberMemberships(memberId, pageSize) {
  try {
    let memberships = [];
    let nextPageToken = '';
    const withinParent = 'groups/-';  // This parameter sets the scope as "all groups"

    do {
      // Get page of memberships
      const queryParams = {
        query: `member_key_id == \'${memberId}\'`,
        page_size: pageSize,
        page_token: nextPageToken,
      };
      const response = groups.Memberships.searchDirectGroups(withinParent, queryParams);
      memberships = memberships.concat(response.memberships);

      // Set up next page
      nextPageToken = response.nextPageToken;
    } while (nextPageToken);

    return memberships;
  } catch(e) {
    console.error(e);
  }
}

Nhận tư cách thành viên từ một nhóm

Sử dụng phương thức groups.memberships.list để liệt kê các thành viên của một nhóm.

groupId: Mã số của nhóm mà bạn muốn liệt kê thành viên. Để tìm mã nhận dạng của một nhóm, hãy sử dụng phương thức groups.lookup. Để xem tất cả mã nhóm trong một khách hàng hoặc không gian tên, hãy sử dụng phương thức groups.list.

const groups = CloudIdentityGroups.Groups;

function listGroupMemberships(groupId, pageSize) {
  try {
    let membershipList = [];
    let nextPageToken = '';

    // Get group name
    const groupName = groups.lookup({'groupKey.id': groupId}).name;

    do {
      // Get page of memberships
      const queryParams = {
        pageSize: pageSize,
        pageToken: nextPageToken
      }
      const response = groups.Memberships.list(groupName, queryParams);
      membershipList = membershipList.concat(response.memberships);

      // Set up next page
      nextPageToken = response.nextPageToken;
    } while(nextPageToken);

    return membershipList;
  } catch (error) {
    console.error(error);
  }
}