Compartilhar via


Problemas conhecidos no Microsoft Graph

Autenticação

A página de consentimento mostra que a aplicação de linha de comandos que atende o PowerShell e a CLI é de um publicador não verificado.

Solução alternativa

Para remover a mensagem "não verificada", pode fazer o seu próprio registo de aplicação, no qual pode definir-se como o publicador verificado. Tem de seguir o processo de verificação do publicador e utilizar o ID da aplicação no SDK do PowerShell do Microsoft Graph, da seguinte forma:

Connect-MgGraph -AppId "{your-own-app-id}" -Scopes "scope"

Em determinadas circunstâncias, o pré-consentimento para aplicações de fornecedor de soluções cloud (CSP) pode não funcionar para alguns dos inquilinos do cliente.

Para aplicativos que usam permissões delegadas, ao usar o aplicativo pela primeira vez com um novo locatário do cliente, você poderá receber esse erro após o logon: AADSTS50000: There was an error issuing a token.

Para aplicativos que usam permissões de aplicativos, seu aplicativo pode adquirir um token, mas inesperadamente receber uma mensagem de acesso negado ao chamar o Microsoft Graph.

Estamos a trabalhar para corrigir este problema, para que o pré-requisito funcione para todos os inquilinos do cliente CSP.

Solução alternativa

Para desbloquear o desenvolvimento e o teste, pode utilizar a seguinte solução.

Observação

Esta não é uma solução permanente e destina-se apenas a desbloquear o desenvolvimento. Esta solução não será necessária quando o problema for corrigido. Esta solução não precisa de ser anulada depois de a correção estar implementada.

  1. Abra um Azure AD sessão do PowerShell v2 e ligue-se ao inquilino do cliente ao introduzir as suas credenciais de administrador na janela de início de sessão. Pode transferir e instalar Azure AD PowerShell V2 a partir daqui.

    Connect-AzureAd -TenantId {customerTenantIdOrDomainName}
    
  2. Crie o servicePrincipal do Microsoft Graph.

    New-AzureADServicePrincipal -AppId 00000003-0000-0000-c000-000000000000
    

Azure AD ponto final v2.0 não é suportado para aplicações CSP

As aplicações do fornecedor de soluções cloud (CSP) têm de adquirir tokens dos pontos finais do Azure AD (v1) para chamar com êxito o Microsoft Graph nos clientes geridos por parceiros. Atualmente, a aquisição de um token através do ponto final do Azure AD v2.0 mais recente não é suportada.

Calendário

Erro ao anexar arquivos grandes a eventos

Um aplicativo com permissões delegadas retorna HTTP 403 Forbidden ao tentar anexar arquivos grandes a uma mensagem ou evento do Outlook que está em uma caixa de correio compartilhada ou delegada. Com as permissões delegadas, createUploadSession só é bem sucedida se a mensagem ou o evento estiver na caixa de correio do usuário conectado.

Notificações de alteração

As notificações de alteração da instalação da aplicação Teams no âmbito do chat não são entregues

Quando é criada uma subscrição para uma notificação de alteração de instalação da aplicação Teams, se o âmbito for específico ou incluir chats, os eventos/notificações de atualização não serão entregues ao subscritor.

Por exemplo: se um cliente subscrever /appCatalogs/teamsApps/{teams-app-id}/installations?$filter=(scopeInfo/scope eq 'groupChat')o , não receberá notificações para eventos de atualização/atualização. No entanto, recebem outras notificações sobre instalações e eliminações.

Outro exemplo: se um cliente subscrever /appCatalogs/teamsApps/{teams-app-id}/installationso , não receberá notificações para eventos de atualização/atualização que ocorram especificamente em chats. No entanto, recebem todas as outras formas de notificações no âmbito pessoal do utilizador e das equipas. No entanto, nas conversas, apenas recebem notificações de instalação e eliminação.

Solução alternativa

Atualmente, não existe nenhuma solução para este problema disponível.

Reserva de clientes

Erro ao consultar bookingBusinesses

Obter a lista de bookingBusinesses falha com o seguinte código de erro quando uma organização tem várias empresas do Bookings e a conta que faz o pedido não é um administrador:

{
  "error": {
    "code": "ErrorExceededFindCountLimit",
    "message": "The GetBookingMailboxes request returned too many results. Please specify a query to limit the results."
  }
}

Solução alternativa

Pode limitar o conjunto de empresas devolvido pelo pedido ao incluir um parâmetro de consulta, por exemplo:

GET https://graph.microsoft.com/beta/bookingBusinesses?query=Fabrikam

Consulta delta

O contexto OData é retornado incorretamente

O contexto de OData às vezes é retornado incorretamente ao controlar alterações nas relações.

Gerenciamento de aplicativo e dispositivo

Não há suporte para acessar e atualizar audiências de implantação

Acessando e atualizando audiências de implantação em recursos de implantação criados por meio do Intune não são suportados atualmente.

  • Listando membros da audiência de implantação e listando exclusões da audiência de implantação retornos 404 Not Found.
  • Atualizar membros da audiência de implantação e exclusões ou atualizar por ID retorna 202 Accepted, mas a audiência não é atualizada.

Grupos

O utilizador não administrador não pode adicionar-se como proprietário do grupo durante a criação ou atualização do grupo

Quando um utilizador não administrador chama a API criar grupo , Atualizar API de grupo ou API de grupo Upsert e adiciona o respetivo ID de utilizador no corpo do owners@odata.bind pedido na coleção, o pedido falha com um 400 Bad Request código de erro com a mensagem "O pedido contém uma propriedade com valores duplicados". Um utilizador não administrador não pode adicionar-se explicitamente como proprietário do grupo.

Solução alternativa

Não existe nenhuma solução para este erro.

Por predefinição, um utilizador não administrador que esteja a criar um grupo de segurança ou do Microsoft 365 através da API Criar grupo ou da API do grupo Upsert é automaticamente adicionado à coleção de proprietários do grupo, se não especificar os proprietários de grupos. Se especificarem outros como proprietários de grupos, o criador do grupo não administrador será adicionado automaticamente à coleção de proprietários do grupo de segurança, mas não para o grupo do Microsoft 365. O utilizador ainda não consegue adicionar-se à coleção de proprietários durante a atualização do grupo.

GET /groups/{id}/members doesn't return service principals in v1.0

A operação API de membros do grupo Lista no ponto final v1.0 não devolve atualmente principais de serviço que possam ser membros do grupo consultado.

Solução alternativa

Como solução, utilize uma das seguintes opções:

  • Utilize a operação API De membros do grupo lista no ponto final beta.
  • Utilize a operação de /groups/{id}?$expand=members API.

Identidade e acesso

A utilização de parâmetros de consulta específicos em /subscribedSkus e /domains não devolve os resultados esperados

A seguinte utilização de parâmetros de consulta que visam as entidades de domínio e os skUs subscritos pode não devolver os resultados esperados:

  • Utilização de $search em skus subscritos ou entidades de domínio
  • Utilização de $top e $filter na entidade de domínio

Atualmente, estes parâmetros são efetivamente ignorados e as consultas não devolvem os resultados esperados.

Solução alternativa

Para evitar qualquer interrupção nos seus processos de negócio, recomendamos que modifique o código da aplicação para remover a utilização destes parâmetros de consulta de consultas que visam as entidades subscritasSkus ou de domínio e execute a pesquisa, a parte superior e o filtro do lado do cliente.

A configuração de domínios federados em cenários delegados requer a permissão Directory.AccessAsUser.All

A permissão Create internalDomainFederation, Update internalDomainFederation e Delete internalDomainFederation poderá exigir que conceda consentimento à permissão Directory.AccessAsUser.All . Este requisito é uma solução temporária até fornecermos uma permissão delegada mais granular para gerir domínios federados.

A API claimsMappingPolicy pode exigir o consentimento das permissões Policy.Read.All e Policy.ReadWrite.ConditionalAccess para os métodos LIST /policies/claimsMappingPolicies e GET /policies/claimsMappingPolicies/{id}, da seguinte forma:

  • Se nenhum objeto claimsMappingPolicy estiver disponível para ser recuperado em uma operação LIST, qualquer permissão será suficiente para chamar esse método.
  • Se existirem objetos claimsMappingPolicy para obter, a sua aplicação tem de consentir ambas as permissões. Caso contrário, um 403 Forbidden erro será retornado.

No futuro, qualquer permissão será suficiente para chamar ambos os métodos.

Atualmente, a API conditionalAccessPolicy requer o consentimento da permissão Policy.Read.All para chamar os métodos POST e PATCH. No futuro, a permissão Policy.ReadWrite.ConditionalAccess permitirá que você leia as políticas do diretório.

Envio em lote JSON

As dependências de solicitação são limitadas

Os pedidos individuais podem depender de outros pedidos individuais. Atualmente, os pedidos só podem depender de um único pedido e têm de seguir um destes três padrões:

  • Paralelo – nenhum pedido individual declara uma dependência na propriedade dependsOn .
  • Serial – todos os pedidos individuais dependem do pedido individual anterior.
  • Mesmo : todos os pedidos individuais que declaram uma dependência na propriedade dependsOn , declaram a mesma dependência. Observação: as solicitações feitas usando este padrão serão executadas sequencialmente.

Conforme o processamento em lotes JSON amadurece, essas limitações são removidas.

Email

Chamadas Delta à API de mensagens com IDs imutáveis

Quando efetua /delta chamadas à API de mensagens com IDs imutáveis em alguns casos (por exemplo, quando uma mensagem sai de uma pasta e é movida novamente para dentro), poderá perder algumas notificações de alteração.

O parâmetro de comentário para criar um rascunho não faz parte do corpo da mensagem

O parâmetro de comentário para criar um rascunho de resposta ou reencaminhamento (createReply, createReplyAll, createForward) não faz parte do corpo do rascunho da mensagem de resposta.

Parâmetros de consulta

$search para objetos de diretório falha no caráter de e comercial codificado (&)

De acordo com o RFC 3986 e conforme descrito em Codificar parâmetros de consulta, os carateres reservados nas cadeias de consulta têm de estar codificados por percentagem. Por exemplo, a sintaxe para $search num nome de grupo como "Caminhadas&Recreação" é a seguinte:

GET https://graph.microsoft.com/v1.0/groups?$search="displayName:Hiking%26Recreation group"

Atualmente, o Microsoft Graph devolve um 400 Bad Request código de erro no ponto final v1.0 em pesquisas que incluem carateres de e comercial codificados (&), com a seguinte mensagem de erro: Unrecognized query argument specified: ''.. O mesmo pedido é bem-sucedido no ponto final beta.

Algumas aplicações implementaram a codificação de dois por cento no ponto final v1.0 como solução. Por exemplo, o pedido codificado de dois por cento torna-se /users?$search="displayName:Hiking%2526Recreation group". No entanto, esta não é a solução oficialmente recomendada.

Solução alternativa

Solução 1:

No ponto final v1.0, ao utilizar a codificação de percentagem adequada, inclua o cabeçalho do Prefer pedido definido como legacySearch=false. Por exemplo:

GET https://graph.microsoft.com/v1.0/groups?$search="displayName:Hiking%26Recreation group"
ConsistencyLevel: eventual
Prefer: legacySearch=false

No futuro, o comportamento no ponto final v1.0 será corrigido e não terá de incluir este cabeçalho.

Solução 2:

Quando o comportamento no ponto final v1.0 é corrigido, as aplicações com dependência na codificação de dois por cento podem sofrer alterações interruptivas, a menos que optem por manter a implementação ao incluir o cabeçalho do Prefer pedido definido como legacySearch=true. Por exemplo:

GET https://graph.microsoft.com/v1.0/groups?$search="displayName:Hiking%2526Recreation group"
ConsistencyLevel: eventual
Prefer: legacySearch=true

Algumas limitações se aplicam aos parâmetros de consulta

As seguintes limitações se aplicam aos parâmetros de consulta:

  • Não são suportados vários espaços de nomes.
  • Os pedidos GET sobre $ref e casting não são suportados em utilizadores, grupos, dispositivos, principais de serviço e aplicações.
  • @odata.bind não é compatível. Isto significa que não pode definir corretamente a propriedade de navegação acceptedSenders ou rejectedSenders num grupo.
  • @odata.id não está presente em navegação sem contenção (como mensagens) ao utilizar metadados mínimos.
  • $expand nas relações de objetos de diretório:
    • Devolve um máximo de 20 objetos, exceto /users?$expand=registeredDevices, que devolve até 100 objetos.
    • Sem suporte para @odata.nextLink.
    • Sem suporte para mais de um nível de expansão.
    • Não existe suporte para aninhar outros parâmetros de consulta, como $filter e $select dentro de uma $expand consulta.
  • $filter:
    • /attachments O ponto final não suporta filtros. Se presente, o parâmetro $filter é ignorado.
    • A filtragem entre cargas de trabalho não é suportada.
    • Ao utilizar o in operador , o pedido está limitado a 15 expressões na cláusula de filtro por predefinição OU um comprimento de URL de 2048 carateres ao utilizar capacidades de consulta avançadas.
    • Ao filtrar com o eq operador , o limite máximo do valor a corresponder é de 120 carateres. Ou seja, $filter=displayName eq 'value-to-match-max-120-char'. Esta limitação aplica-se mesmo a propriedades como displayName em objetos de diretório que podem ter até 256 carateres. Ao utilizar consultas avançadas, o limite é aplicado no comprimento do URL a 2048 carateres em vez do valor correspondente.
  • $search:
    • A pesquisa de texto completo só está disponível para um subconjunto de entidades, como mensagens.
    • A pesquisa entre cargas de trabalho não é suportada.
    • A pesquisa não é suportada nos inquilinos do Azure AD B2C.
  • $count:
    • Não há suporte para locatários Azure AD B2C aplicativos.
    • Ao utilizar a $count=true cadeia de consulta ao consultar recursos de diretório, a @odata.count propriedade só está presente na primeira página dos dados paginados.
  • Os parâmetros de consulta especificados em uma solicitação podem falhar silenciosamente. Isto pode ser verdade para parâmetros de consulta não suportados e para combinações não suportadas de parâmetros de consulta.

Criar uma externalConnection com uma card adaptável quebrada devolve uma resposta 503 Serviço Indisponível, seguida de um erro 409 Conflito

Quando utiliza as APIs do Microsoft Graph para criar uma ligação externa com uma card adaptável quebrada para o esquema de resultados, a primeira chamada falha com um 503 Service Unavailable erro. Em seguida, a segunda chamada falha com 409 Conflict o erro que indica que já existe uma ligação com o mesmo nome.

Embora o primeiro pedido tenha falhado com uma resposta 503, a ligação ainda foi criada. No entanto, o modelo de card adaptável não foi registado porque está avariado.

Sites e listas

Os sites a seguir/não seguir não estão sincronizados com o SharePoint a seguir

Ao consultar sites seguidos através do Microsoft Graph, a resposta pode ter resultados incorretos e esses resultados podem não corresponder aos resultados dos seguintes conteúdos no SharePoint.

Solução alternativa

Utilize a seguinte API REST de pessoas e conteúdos .

Trabalho em equipa e comunicações

A listagem de chamadasRegistos participant_v2 pode não devolver todos os participantes

Em alguns casos edge, um pedido para listar participants_v2 para uma chamadaRegisto pode devolver uma lista incompleta.

Solução alternativa

Pode utilizar a propriedade participantes existentes de uma chamadaRegisto para obter uma lista completa dos participantes.

SDK de Chamadas de Comunicações: número de participante registado inconsistente mostrado no cliente do Teams quando o agrupamento de bots está ativado

Quando as aplicações de bot de gravação ativam o Agrupamento de Bots, o número de participantes mostrados pelo cliente do Teams como estando a ser gravado não é exato. Uma vez que os participantes estão agrupados, o número apresentado de participantes a ser registado é inferior ao número real.

Solução alternativa

Desative o agrupamento de bots para mostrar uma contagem precisa.

A API callRecords representa os participantes da aplicação como utilizadores em communicationsIdentitySet

No recurso de participante callRecord , os participantes da aplicação/bot são atualmente representados pelas communicationsUserIdentity em vez de communicationsApplicationIdentity.

Solução alternativa

Utilize o cabeçalho do agente de utilizadorValue no recurso participantEndpoint numa sessão callRecord para identificar os participantes da aplicação e ver detalhes adicionais sobre a identidade da aplicação.

SDK de Chamadas de Comunicação: o suporte para o caso de utilização de vários pontos finais no modo de notificação de lista delta está em falta

Quando a mesma aplicação ou utilizador participa na mesma reunião com vários pontos finais e o modo de notificação da lista é uma lista delta, as atualizações da lista de participantes fornecidas pelo SDK de Comunicações podem não capturar os pontos finais adicionais adicionados à chamada em curso.

Solução alternativa

O modo legado da lista suporta o caso de utilização de vários pontos finais. Utilize a versão 1.2.0.7270 ou anterior do SDK.

SDK de Chamadas de Comunicação: exceção de processamento de mensagens do Webhook: System.Security.Cryptography.CryptographicException

O lançamento dos KBs introduziu um problema com as aplicações desenvolvidas com os SDKs de Chamadas de Comunicação.

O método do Microsoft Graph AnswerAsync gera uma exceção quando o bot tenta responder a chamadas recebidas. Isto está relacionado com as seguintes atualizações do Windows:

  • Wk22 - KB5038282
  • Wk19 - KB5038283

Para obter detalhes, consulte SHA256 ComputeHash started throwing - Microsoft Community.

Solução alternativa

Reverta os KBs pendentes de uma versão atualizada do SDK.

Pedidos de controlo de alterações para APIs que exportam artefactos de reunião online devolvem itens que já estão sincronizados

Os pedidos de controlo de alterações (/delta) para obterAllTranscripts ou getAllRecordings podem devolver itens que já estavam sincronizados em pedidos anteriores.

Isto acontece quando a reunião teve outras atualizações não relacionadas, como adicionar participantes, notas ou ficheiros.

Solução alternativa

Para cada item na resposta, marcar o createdDateTime da gravação ou transcrição e compare-o com o carimbo de data/hora da sincronização anterior. Se createdDateTime estiver antes do carimbo de data/hora da última sincronização, o item já está sincronizado e pode ser ignorado.

As APIs que exportam artefactos de reuniões online não devolvem gravações para reuniões sem transcrições ativadas

A API getAllRecordings não devolve gravações para reuniões que não tenham a transcrição ativada.

Quando chama as APIs getAllRecordings ou getAllTranscripts , a transmissão do $top filtro poderá não devolver o @odata.nextLink, mesmo quando existem mais itens para exportar.

Solução alternativa

Não transmita $top o parâmetro de consulta até que o problema seja corrigido.

A API de membros da equipa de lista falha com erros 401 em inquilinos recém-criados

Quando um inquilino recém-criado envia uma lista de membros do pedido de equipa através de capacidades avançadas de consulta Azure AD, ocorre um erro HTTP 401.

Solução alternativa

  1. Chame a API de equipas de lista e aguarde alguns segundos.
  2. Chame /teams/{id}/members e marcar para obter uma resposta bem-sucedida.

O método clonar equipa não inclui todos os proprietários da equipa de origem na equipa clonada

Quando chama o método de equipa clone, se a equipa de origem contiver mais do que um proprietário, apenas um proprietário é preservado na equipa clonada. Os outros proprietários tornam-se membros da nova equipa clonada. Não é possível escolher ou configurar o proprietário que é retido como proprietário da nova equipa.

Solução alternativa

Utilize o método Adicionar membros depois de clonar a equipa para atualizar os proprietários originais dos membros para os proprietários.

Criar canal pode devolver uma resposta de erro

Quando cria um canal, se utilizar carateres especiais no nome do canal, a API Get filesFolder devolverá uma 400 Bad Request resposta de erro. Quando criar um canal, certifique-se de que displayName para o canal não:

  • Inclua qualquer um dos seguintes carateres especiais: ~ # % & * { } + / \ : < > ? | ' ".
  • Comece com um caráter de sublinhado (_) ou ponto final (.) ou termine com um ponto final (.).

Não é possível acessar um canal compartilhado entre locatários quando a URL de solicitação contém locatários/{cross-tenant-id}

A API chama teams/{team-id}/incomingChannels e teams/{team-id}/allChannels devolve a @odata.id propriedade que pode utilizar para aceder ao canal e executar outras operações no objeto de canal. Se chamar o URL devolvido a @odata.id partir da propriedade, o pedido falha com o seguinte erro quando tenta aceder ao canal partilhado entre inquilinos:

GET /tenants/{tenant-id}/teams/{team-id}/channels/{channel-id}
{
    "error": {
        "code": "BadRequest",
        "message": "TenantId in the optional tenants/{tenantId} segment should match the tenantId(tid) in the token used to call Graph.",
        "innerError": {
            "date": "2022-03-08T07:33:50",
            "request-id": "dff19596-b5b2-421d-97d3-8d4b023263f3",
            "client-request-id": "32ee2cbd-27f8-2441-e3be-477dbe0cedfa"
        }
    }
}

Solução alternativa

Remova a /tenants/{tenant-id} parte do URL antes de chamar a API para aceder ao canal partilhado entre inquilinos.

Solicitações para filtrar membros da equipe por função exigem um parâmetro

Todos os pedidos para filtrar membros da equipa por funções esperam um parâmetro skipToken ou um parâmetro superior no pedido, mas não ambos. Se ambos os parâmetros forem passados na solicitação, o parâmetro top será ignorado.

Não é possível filtrar os membros da equipe por funções

Filtros de consulta de função junto com outros filtros GET /teams/team-id/members?$filter=roles/any(r:r eq 'owner') and displayName eq 'dummy' podem não funcionar. O servidor pode responder com uma.BAD REQUEST

O menu "Exibir detalhes da reunião" não está disponível no cliente Microsoft Teams

O cliente do Microsoft Teams não mostra o menu Ver detalhes da Reunião para reuniões de canal criadas através da API de comunicações na cloud.

A etiqueta de confidencialidade não aparece na IU do Teams

Por vezes, as Etiquetas de Confidencialidade que são aplicadas ao Teams não aparecem na IU do Teams, embora possa ser claramente vista tanto no site do SharePoint subjacente como no Centro de Administração.

Algumas propriedades para membros do chat podem estar ausentes na resposta a uma solicitação GET

Em determinadas instâncias, a propriedade tenantId/email/displayName para os membros individuais de uma conversa pode não ser preenchida num GET /chats/chat-id/members pedido ou GET /chats/chat-id/members/membership-id num pedido.

Obter o limite de chats atualizado para expandir membros

Esta API funciona de forma diferente numa ou mais clouds nacionais. Para obter detalhes, veja Diferenças de implementação nas clouds nacionais. Quando $expand=members é incluída, esta API devolve um máximo de 25 itens, mesmo que seja especificado um valor maior $top .

layoutType propriedade devolve null ao listar todos os canais

Na versão beta atual, a propriedade layoutType é devolvida null ao listar todos os canais.

Usuários

As APIs que exportam artefactos de reunião online podem devolver URLs de transcrição que não contêm conteúdo

A API getAllTranscripts pode devolver URLs de conteúdo de transcrição para algumas reuniões que não têm palavras transcritas. As chamadas para o URL de conteúdo dessas reuniões irão devolver um erro.

Solução alternativa

Verifique se a reunião foi transcrita e se existe conteúdo válido. Se existir, comunique-o para uma investigação mais aprofundada. Caso contrário, ignore o URL do conteúdo.

A propriedade showInAddressList está fora de sincronia com o Microsoft Exchange

Ao consultar usuários por meio do Microsoft Graph, a propriedade showInAddressList pode não indicar o mesmo status mostrado no Microsoft Exchange. Recomendamos que você gerencie essa funcionalidade diretamente com o Microsoft Exchange por meio do Centro de administração do Microsoft 365 e não use essa propriedade no Microsoft Graph.

O acesso à foto de perfil de um usuário é limitado

A leitura e a atualização da foto do perfil do usuário só serão possíveis se o usuário tiver uma caixa de correio. Falha ao ler ou atualizar uma foto, nesse caso, resulta no seguinte erro:

{
  "error": {
    "code": "ErrorNonExistentMailbox",
    "message": "The SMTP address has no mailbox associated with it."
  }
}

Todas as fotografias que possam ter sido armazenadas anteriormente com a propriedade thumbnailPhoto (utilizando o Azure AD API do Graph (atualmente no ciclo de descontinuação) ou através da sincronização do AD Connect) já não estão acessíveis através da propriedade de fotografia do Microsoft Graph do recurso do utilizador.

A gestão das fotografias dos utilizadores através do recurso profilePhoto do microsoft API do Graph não é atualmente suportada nos inquilinos do Azure AD B2C.