Lister les membres d'un espace

Ce guide explique comment utiliser la méthode list() sur la ressource Membership de l'API Google Chat pour lister les membres d'un espace sous la forme d'une liste paginée et filtrable des appartenances à un espace.

  • La liste des membres avec authentification de l'application répertorie les membres des espaces auxquels l'application Chat a accès, mais exclut les membres de l'application Chat, y compris les siens.
  • La liste des membres avec authentification de l'utilisateur répertorie les membres des espaces auxquels l'utilisateur authentifié a accès.
  • En tant qu'administrateur Google Workspace, vous pouvez lister les membres des espaces de votre organisation Google Workspace en utilisant l'authentification des utilisateurs avec des droits d'administrateur.

La ressource Membership indique si un utilisateur humain ou une application Google Chat est invité à un espace, en fait partie ou n'y est pas.

Prérequis

Node.js

Python

Java

Apps Script

Lister les membres d'un espace avec l'authentification des utilisateurs

Pour lister les utilisateurs, les groupes Google et l'application Chat dans un espace auquel l'utilisateur authentifié a accès, transmettez les éléments suivants dans votre requête :

  • Avec l'authentification de l'utilisateur, spécifiez le champ d'application de l'autorisation chat.memberships.readonly ou chat.memberships.
  • Appelez la méthode ListMemberships().
  • Pour lister les groupes Google, définissez le paramètre de requête showGroups sur true.

L'exemple suivant liste les membres de groupes Google, les utilisateurs et les applications visibles par l'utilisateur authentifié.

Node.js

chat/client-libraries/cloud/list-memberships-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.memberships.readonly'];

// This sample shows how to list memberships with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
    // ROLE_MANAGER)
    filter: 'member.type = "HUMAN"'
  };

  // Make the request
  const pageResult = chatClient.listMembershipsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

main().catch(console.error);

Python

chat/client-libraries/cloud/list_memberships_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.memberships.readonly"]

# This sample shows how to list memberships with user credential
def list_memberships_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.ListMembershipsRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
        # ROLE_MANAGER)
        filter = 'member.type = "HUMAN"',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_memberships(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_memberships_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMembershipsUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMembershipsRequest;
import com.google.chat.v1.ListMembershipsResponse;
import com.google.chat.v1.Membership;

// This sample shows how to list memberships with user credential.
public class ListMembershipsUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.memberships.readonly";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      ListMembershipsRequest.Builder request = ListMembershipsRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Filter membership by type (HUMAN or BOT) or role
        // (ROLE_MEMBER or ROLE_MANAGER).
        .setFilter("member.type = \"HUMAN\"")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterating over results and resolve additional pages automatically.
      for (Membership response :
          chatServiceClient.listMemberships(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list memberships with user credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships.readonly'
 * referenced in the manifest file (appsscript.json).
 */
function listMembershipsUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = 'spaces/SPACE_NAME';
  // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
  // ROLE_MANAGER)
  const filter = 'member.type = "HUMAN"';

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Members.list(parent, {
      filter: filter,
      pageSize: 10,
      pageToken: pageToken
    });
    // Handle response pages
    if (responsePage.memberships) {
      responsePage.memberships.forEach((membership) => console.log(membership));
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Pour exécuter cet exemple, remplacez SPACE_NAME par l'ID du champ name de l'espace. Vous pouvez obtenir l'ID en appelant la méthode ListSpaces() ou à partir de l'URL de l'espace.

L'API Google Chat renvoie une liste des membres de groupes Google, des utilisateurs et des applications de l'espace spécifié.

Lister les membres d'un espace avec l'authentification d'application

Pour lister les utilisateurs et l'application Chat dans un espace auquel l'application authentifiée a accès, transmettez les éléments suivants dans votre requête :

L'exemple suivant liste les membres humains d'un espace (et non les gestionnaires d'espace) visibles dans l'application Chat :

Node.js

chat/client-libraries/cloud/list-memberships-app-cred.js
import {createClientWithAppCredentials} from './authentication-utils.js';

// This sample shows how to list memberships with app credential
async function main() {
  // Create a client
  const chatClient = createClientWithAppCredentials();

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
    // ROLE_MANAGER)
    filter: 'member.type = "HUMAN"'
  };

  // Make the request
  const pageResult = chatClient.listMembershipsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

main().catch(console.error);

Python

chat/client-libraries/cloud/list_memberships_app_cred.py
from authentication_utils import create_client_with_app_credentials
from google.apps import chat_v1 as google_chat

# This sample shows how to list memberships with app credential
def list_memberships_app_cred():
    # Create a client
    client = create_client_with_app_credentials()

    # Initialize request argument(s)
    request = google_chat.ListMembershipsRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
        # ROLE_MANAGER)
        filter = 'member.type = "HUMAN"',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_memberships(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_memberships_app_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMembershipsAppCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMembershipsRequest;
import com.google.chat.v1.ListMembershipsResponse;
import com.google.chat.v1.Membership;

// This sample shows how to list memberships with app credential.
public class ListMembershipsAppCred {

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithAppCredentials()) {
      ListMembershipsRequest.Builder request = ListMembershipsRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Filter membership by type (HUMAN or BOT) or role
        // (ROLE_MEMBER or ROLE_MANAGER).
        .setFilter("member.type = \"HUMAN\"")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterate over results and resolve additional pages automatically.
      for (Membership response :
          chatServiceClient.listMemberships(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list memberships with app credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.bot'
 * used by service accounts.
 */
function listMembershipsAppCred() {
// Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = 'spaces/SPACE_NAME';
  // Filter membership by type (HUMAN or BOT) or role (ROLE_MEMBER or
  // ROLE_MANAGER)
  const filter = 'member.type = "HUMAN"';

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Members.list(parent, {
      filter: filter,
      pageSize: 10,
      pageToken: pageToken
    }, getHeaderWithAppCredentials());
    // Handle response pages
    if (responsePage.memberships) {
      responsePage.memberships.forEach((membership) => console.log(membership));
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Pour exécuter cet exemple, remplacez SPACE_NAME par l'ID du champ name de l'espace. Vous pouvez obtenir l'ID en appelant la méthode ListSpaces() ou à partir de l'URL de l'espace.

L'API Google Chat renvoie une liste des membres humains (à l'exception des gestionnaires) de l'espace spécifié.

Lister les membres en tant qu'administrateur Google Workspace

Si vous êtes administrateur Google Workspace, vous pouvez appeler la méthode ListMemberships() pour lister les membres de n'importe quel espace de votre organisation Google Workspace. L'API Chat ne renvoie que les appartenances des utilisateurs (internes et externes) ou des groupes Google de votre organisation. Elle omet donc les appartenances pour toutes les applications Chat.

Pour appeler cette méthode en tant qu'administrateur Google Workspace, procédez comme suit :

  • Appelez la méthode à l'aide de l'authentification de l'utilisateur et spécifiez un champ d'application de l'autorisation qui permet d'appeler la méthode à l'aide des droits d'administrateur.
  • Dans votre requête, spécifiez les paramètres de requête suivants :
    • Définissez useAdminAccess sur true.
    • Pour ne renvoyer que les utilisateurs, définissez filter pour member.type sur HUMAN.
    • Pour renvoyer des utilisateurs et des groupes, définissez filter pour member.type différent de BOT AND showGroups égal à true.

Pour en savoir plus et obtenir des exemples, consultez Gérer les espaces Google Chat en tant qu'administrateur Google Workspace.

Personnaliser la pagination ou filtrer la liste

Pour lister les abonnements, transmettez les paramètres de requête suivants afin de personnaliser la pagination ou de filtrer les abonnements listés :

  • pageSize : nombre maximal de membres à renvoyer. Le service peut renvoyer un nombre inférieur à cette valeur. Si aucune valeur n'est spécifiée, 100 espaces au maximum sont renvoyés. La valeur maximale est de 1 000. Les valeurs supérieures à 1 000 sont automatiquement ramenées à 1 000.
  • pageToken : jeton de page reçu d'un appel list spaces précédent. Fournissez ce jeton pour récupérer la page suivante. Lors de la pagination, la valeur du filtre doit correspondre à l'appel ayant fourni le jeton de page. Si vous transmettez une valeur différente, vous risquez d'obtenir des résultats inattendus.
  • filter : filtre de requête. Nécessite l'authentification de l'utilisateur. Pour en savoir plus sur les requêtes compatibles, consultez la documentation de référence sur ListMembershipsRequest.