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.

  • L'affichage des appartenances avec l'authentification de l'application liste les appartenances aux espaces auxquels l'application Chat a accès, mais exclut les appartenances à l'application Chat, y compris la sienne.
  • La liste des appartenances avec authentification utilisateur liste les appartenances dans les espaces auxquels l'utilisateur authentifié a accès.
  • Si vous listez les appartenances en tant qu'administrateur Google Workspace avec une authentification utilisateur à l'aide de droits d'administrateur, vous obtiendrez la liste des appartenances à tous les espaces de votre organisation Google Workspace.

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

Prérequis

Node.js

Python

Java

Apps Script

Lister les membres d'un espace avec authentification des utilisateurs

Pour répertorier 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 des utilisateurs, 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 du groupe Google, les utilisateurs et les membres de l'application 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 de membres d'un groupe Google, d'humains et d'applications de l'espace spécifié.

Lister les membres d'un espace avec authentification par application

Pour répertorier les utilisateurs et l'application Chat dans un espace auquel l'application authentifiée a accès, transmettez la commande suivante dans votre requête:

L'exemple suivant liste les membres humains de l'espace (et non les gestionnaires de l'espace) visibles par 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 de l'espace humain (à l'exclusion des gestionnaires de l'espace) de l'espace spécifié.

Ajouter des membres en tant qu'administrateur Google Workspace

Si vous êtes administrateur Google Workspace, vous pouvez appeler la méthode ListMemberships() pour lister les appartenances à 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, et ignore donc les appartenances à des 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 utilisateur et spécifiez un champ d'application de l'autorisation compatible avec l'appel de la méthode à l'aide de 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 des utilisateurs, définissez filter pour member.type sur HUMAN.
    • Pour renvoyer des utilisateurs et des groupes, définissez filter pour member.type ne pas être égal à BOT AND showGroups égal à true.

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

Personnaliser la pagination ou filtrer la liste

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

  • pageSize: nombre maximal d'adhésions à 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 1 000. Les valeurs supérieures à 1 000 sont automatiquement remplacées par 1 000.
  • pageToken: jeton de page reçu d'un appel de liste d'espaces 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. Transmettre une valeur différente peut entraîner des résultats inattendus.
  • filter: filtre de requête. Nécessite l'authentification des utilisateurs. Pour en savoir plus sur les requêtes compatibles, consultez la documentation de référence sur ListMembershipsRequest.