Obtener la lista de usuarios con facebook.com como proveedor en nuestro b2c.

Luti Alberto 20 Puntos de reputación
2024-09-09T15:50:55.27+00:00

Con la api de microsoft-graph-1 consigo filtrar esos usuarios utulizando el siguiente llamado:

https://graph.microsoft.com/v1.0/users?$filter=identities/any(x:x/issuer eq 'facebook.com')

Como se puede apreciar, utilizo el parametro $filter, luego issuer y lo comparo contra 'facebook.com'. Esa es la logica correcta para saber lo que necesito. El problema lo tengo con la respuesta que dicha consulta genera.

El acceso a users está paginado con un tope de 999 registros. Si superás esa cantidad se te agrega la siguiente propiedad a la respuesta: @odata.nextLink

En la misma se replica la consulta original y se agrega el parametro $skipToken para obtener los datos de la siguiente pagina.

Sin embargo, dicha consulta arroja error indicando que el $skipToken y el criterio de busqueda utilizado no son compatibles para el recurso users

Respuesta ->

"error": {

    "code": "Request_UnsupportedQuery",

    "message": "Invalid next page search request.",

    "innerError": {

        "date": "2024-09-09T15:48:22",

        "request-id": "997a2530-23a2-4e35-8986-7135155deefd",

        "client-request-id": "997a2530-23a2-4e35-8986-7135155deefd"

    }

}
```Es posible escribir la consulta de otra forma y que el paginado funcione?

Es posible obtener estos datos mediante otro medio?

Muchas Gracias

Centro de la comunidad | Sitio para el análisis de preguntas y respuestas | Introducción a preguntas y respuestas
0 comentarios No hay comentarios
{count} votos

Respuesta aceptada
  1. Jonathan Pereira Castillo 17,170 Puntos de reputación Personal externo de Microsoft Moderador
    2024-09-18T18:33:10.47+00:00

    Gracias por su respuesta, Luti Alberto. Entiendo perfectamente sus puntos. Nuestro foro está diseñado para proporcionar ayuda general a nuestros clientes, ya que no cuenta con una opción para compartir información de manera confidencial.

    Dado que la asistencia general proporcionada no ha resuelto el problema, le recomiendo utilizar otras herramientas, como acceso remoto y revisión de logs, entre otras que puedan ser necesarias. Estas opciones están disponibles a través de nuestros compañeros de Microsoft 365. Al crear un ticket de soporte con ellos, podrán ofrecerle una ayuda más rápida y específica para su consulta. Saludos

    Jonathan.

    0 comentarios No hay comentarios

1 respuesta adicional

Ordenar por: Muy útil
  1. Jonathan Pereira Castillo 17,170 Puntos de reputación Personal externo de Microsoft Moderador
    2024-09-09T15:59:52.1966667+00:00

    Hola Luti Alberto,

    ¡Bienvenido a Preguntas y respuestas de Microsoft!

    Alberto el codigo no es especificamente soportado por Microsoft, habiendo dicho esto dejame intentar ayudarte o al menos ayudarte a encontrar la solución.

    Entiendo el problema que estás enfrentando con la paginación en la API de Microsoft Graph. La combinación de $skipToken con el filtro de búsqueda puede ser problemática en algunos casos. Aquí hay algunas alternativas que podrías considerar:

    1. Usar $top y $skip: En lugar de usar $skipToken, podrías intentar usar $top y $skip para manejar la paginación manualmente. Por ejemplo:
         https://graph.microsoft.com/v1.0/users?$filter=identities/any(x:x/issuer eq 'facebook.com')&$top=999&$skip=0
      
      Luego, para la siguiente página:
         https://graph.microsoft.com/v1.0/users?$filter=identities/any(x:x/issuer eq 'facebook.com')&$top=999&$skip=999
      
    2. Usar $orderby: A veces, ordenar los resultados puede ayudar a que la paginación funcione mejor. Puedes intentar ordenar por un campo único como id o userPrincipalName:
         https://graph.microsoft.com/v1.0/users?$filter=identities/any(x:x/issuer eq 'facebook.com')&$orderby=id&$top=999
      
      Segmentar la consulta: Si sabes que los usuarios con identidades de facebook.com son un subconjunto específico, podrías intentar segmentar la consulta en partes más pequeñas. Por ejemplo, si los usuarios están distribuidos por userPrincipalName, podrías hacer consultas separadas para diferentes rangos alfabéticos.
    3. Usar la API de batch: La API de Microsoft Graph permite hacer solicitudes en batch, lo que podría ayudarte a manejar grandes volúmenes de datos de manera más eficiente. Aquí tienes un ejemplo de cómo podrías estructurar una solicitud batch: JSON
         {
           "requests": [
             {
               "id": "1",
               "method": "GET",
               "url": "/users?$filter=identities/any(x:x/issuer eq 'facebook.com')&$top=999"
             },
             {
               "id": "2",
               "method": "GET",
               "url": "/users?$filter=identities/any(x:x/issuer eq 'facebook.com')&$top=999&$skip=999"
             }
           ]
         }
         
      

    ¡Espero que estos consejos ayuden a resolver el problema! Si necesitas más ayuda, estoy a tu disposición.

    Saludos

    Jonathan.


    Si considera que la información proporcionada anteriormente ha resuelto su consulta, le agradeceríamos que la marcara como “Aceptar la respuesta si te resulta útil”. Esto nos ayuda a mantener la calidad y relevancia de las soluciones en nuestro foro.


Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.