Como corrigir o erro: HTTPError: 401 Client Error: Unauthorized for url: https://locatario.sharepoint.com/sites/tabela/_api/Web

Wilton Izaquiel 5 Pontos de reputação
2025-08-28T14:51:57.2733333+00:00

Caros,

Eu tenho um código escrito em Python que se conecta e lê determinadas listas de um site do Sharepoint.

O código desenvolvido é esse:

from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.client_credential import ClientCredential

client_id = "CLIENT-ID"
client_secret = "CLIENT-SECRET"
site_url = "https://<locatario>.sharepoint.com/sites/<site-sharepoint>"
    
creds = ClientCredential(client_id, client_secret)
ctx = ClientContext(site_url).with_credentials(creds)
    
# Exemplo de consulta
web = ctx.web.get().execute_query()
print("Conectado ao site:", web.properties["Title"])

Sempre quando rodo esse código, aparece a seguinte mensagem de erro:

HTTPError: 401 Client Error: Unauthorized for url: https://<locatario>.sharepoint.com/sites/<site-sharepoint>/_api/Web

Após algumas pesquisas na internet, eu realizei as seguintes ações para tentar solucionar esse problema:

  • Registrei um aplicativo no Microsoft Entra ID (Azure AD);
  • Criei um Client-Secret e armazei o valor do segredo;
  • Dei as seguintes permissões de API (com o concetimento do administrador):
    • Microsoft Graph
      • Sites.FullControl.All
    • Sharepoint
      • Sites.FullControl.All
      • Sites.Manage.All

Entretanto, continuo enfrentando o mesmo problema.

Sabem como posso resolver esse problema?

Tecnologias de desenvolvedor | Visual Studio | Outro
Tecnologias de desenvolvedor | Visual Studio | Outro

Uma família de pacotes da Microsoft de ferramentas de desenvolvimento integradas para a criação de aplicativos para Windows, web, dispositivos móveis e muitas outras plataformas. Tópicos diversos que não se encaixam em categorias específicas.

0 comentários Sem comentários

5 respostas

Classificar por: Mais útil
  1. Wilton Izaquiel 5 Pontos de reputação
    2025-08-28T23:27:46.15+00:00

    Sim, Francisco.

    Só coloquei desse jeito para não mostrar dados sensíveis da empresa.

    Esta resposta foi útil?

    1 pessoa achou esta resposta útil.

  2. Francisco Lionel 0 Pontos de reputação
    2025-08-30T01:40:40.52+00:00

    A resposta apresentada mostra que o usuário que você está utilizando não tem permissão para enviar a requisição. Você precisa autorizar este usuário no Microsoft Entra ID e autorizar também no sharepoint.

    Confirma que está fazendo assim?

    Esta resposta foi útil?

    0 comentários Sem comentários

  3. Francisco Lionel 0 Pontos de reputação
    2025-08-28T23:25:43.5766667+00:00

    Wilton,
    Só uma dúvida,
    Você está substituindo os valores do Client_ID e Client_Secret correto?
    Assim como está substituindo o valor <locatario> e <site-sharepoint>, correto?

    Deveria ser algo assim:
    client_id = "12345678-abcd-4321-9876-abcdef123456"

    client_secret = "324235465456435765756898uyiy9fT#ZyP0qK!rQw5hL2x"

    site_url = "https://empresa.sharepoint.com/sites/ProjetosTI"

    Você precisa realizar estas substituições para que venha a funcionar.

    Esta resposta foi útil?

    0 comentários Sem comentários

  4. Wilton Izaquiel 5 Pontos de reputação
    2025-08-28T22:44:58.54+00:00

    Caro @Francisco Lionel ,

    Muito obrigado pela resposta e por tentar ajudar.

    Segui a sua sugestão, mas mesmo assim está me retornando o seguinte erro

    ClientRequestException: (None, None, '401 Client Error: Unauthorized for url: https://<locatario>.sharepoint.com/sites/<site-sharepoint>/_api/Web')  
    

    Teria outra sugestão?

    Obrigado!

    Esta resposta foi útil?

    0 comentários Sem comentários

  5. Francisco Lionel 0 Pontos de reputação
    2025-08-28T17:25:07.15+00:00

    Você consegue fazer um teste?

    Carrega o contexto antes de executar a query.
    Trocar esta linha web = ctx.web.get().execute_query() pelo código abaixo.
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()

    Esta resposta foi útil?

    0 comentários Sem comentários

Sua resposta

As respostas podem ser marcadas como ‘Aceitas’ pelo autor da pergunta e ‘Recomendadas’ pelos moderadores, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.