Gelişmiş Cloud Identity Groups Hizmeti

Gelişmiş Cloud Identity Groups (CIG) hizmeti, Apps Komut Dosyası'nda CIG API'yi kullanmanıza olanak tanır.

Referans

Bu hizmet hakkında ayrıntılı bilgi için CIG API'nin referans dokümanlarına bakın. Apps Komut Dosyası'ndaki tüm gelişmiş hizmetler gibi gelişmiş CIG hizmeti de herkese açık API ile aynı nesneleri, yöntemleri ve parametreleri kullanır. Daha fazla bilgi için Yöntem imzaları nasıl belirlenir? başlıklı makaleyi inceleyin.

Örnek Kod

Aşağıdaki yardımcı işlevler, API'nin v1 sürümünü kullanır.

Grup Oluştur

Google grubu oluşturmak için yeni grup kaynağının bir örneğiyle groups.create işlevini çağırın. Grup örneğinde cloudidentity.googleapis.com/groups.discussion_forum olarak ayarlanmış bir groupKey, parent ve label bulunmalıdır. Ayrıca, grubun ilk sahibini tanımlayan initialGroupConfig parametresini de ayarlamanız gerekir. Bu parametre için aşağıdaki değerleri kullanabilirsiniz:

WITH_INITIAL_OWNER: İsteği gönderen kişiyi grubun sahibi yapar.

EMPTY: İlk sahipleri olmayan bir grup oluşturur. Bu değeri yalnızca Google Workspace süper yöneticisi veya Gruplar yöneticisiyseniz kullanabilirsiniz. Google Workspace rolleri hakkında daha fazla bilgi için önceden oluşturulmuş yönetici rollerine bakın.

Aşağıdaki örnekte, grup oluşturmaya yönelik bir yardımcı işlev gösterilmektedir:

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: "EMPTY" };

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

Grup arama

Google grubu aramak için bir sorgu dizesi ile groups.search işlevini çağırın. Tüm grupları aramak için label cloudidentity.googleapis.com/groups.discussion_forum değerini girin.

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));
}

Gruba üye ekleme

Grup oluşturduktan sonra grup için üyelikler oluşturabilirsiniz. Bu yöntem için bir membership kaynağı ve üst öğenin name kaynağı dizesi gerekir. Önceki değer, lookup yöntemi aracılığıyla grup arandığında elde edilebilir.

Aşağıdaki yardımcı yöntemde, bir gruba üyelik ekleme örneği gösterilmektedir. expiryDetail, üyeliğin geçerlilik bitiş tarihini ayarlamak için eklenebilecek isteğe bağlı bir alandır. preferredMemberKey değeri, üyenin e-posta adresidir.

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);
  }
}

Üyelerden üyelik alma

Bir üyenin birinci derece ebeveynlerini aramak için groups.memberships.searchDirectGroups yöntemini kullanın.

Aşağıdaki yardımcı yöntemde, belirli bir üyenin doğrudan üyelikleri arasında iterasyon yapma örneği gösterilmektedir.

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);
  }
}

Grup Üyeliklerini Alma

Bir grubun üyelerini listelemek için groups.memberships.list yöntemini kullanın.

groupId: Üyelerini listelemek istediğiniz grubun sayısal kimliği. Tek bir grubun kimliğini bulmak için groups.lookup yöntemini kullanın. Bir müşteri veya ad alanı altındaki tüm grup kimliklerini görmek için groups.list yöntemini kullanın.

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);
  }
}