Olá,
Tentei me conectar ao portal Sharepoint da minha intranet com Office365-REST-Python-Client, mas falhou ao chamar purchase_token_for_user () da classe AuthenticationContext:
url = " https://mycompany.sharepoint.com "
ctx_auth = AuthenticationContext (url)
ctx_auth.acquire_token_for_user ("my_username", "my_password")
aciona o seguinte erro:
AttributeError: o objeto 'NoneType' não possui o atributo 'text'
Cumprimentos,
marca
Eu tenho exatamente o mesmo problema
Mesmo, isso simplesmente apareceu, não consigo mais acessar o ponto de compartilhamento.
Tenho o mesmo problema e não consigo acessar o sharepoint corporativo. Em outra edição (# 76, em 5 de agosto de 2018) mostra a próxima solução (que ainda não funcionou para mim):
_Resolvido. O problema era o uso de um usuário da empresa, para o qual uma verificação é realizada, apenas via navegador, entre o Azure Active Directory e o Active Direcotry interno. Para o script em lote, criei um usuário na nuvem AAD._
Na verdade, tenho meu usuário no AAD, mas ainda não consigo acessar :( alguma solução / pista?
Meu código funciona:
userName = 'meunomedeusuario'
passWord = 'minhasenha'
ctx_auth.acquire_token_for_user (username = userName, password = passWord)
Funciona pra mim também. O URL também pode ser algo como " https://mycompany.sharepoint.com/sites/AnotherSite " ou " https://mycompany.sharepoint.com/sites/AnotherSite/Subsite "
Em vez disso, tente com este código:
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.runtime.client_request import ClientRequest
from office365.runtime.utilities.request_options import RequestOptions
user_credentials = {
'username' : '[email protected]',
'password' : 'my_password'
}
site_url = "https://mycompany.sharepoint.com/"
ctx_auth = AuthenticationContext(site_url)
if ctx_auth.acquire_token_for_user(user_credentials['username'], user_credentials['password']):
request = ClientRequest(ctx_auth)
options = RequestOptions("{0}/_api/web/lists".format(site_url))
options.set_header('Accept', 'application/json')
options.set_header('Content-Type', 'application/json')
data = request.execute_request_direct(options)
s = json.loads(data.content)
Este problema deve ser corrigido com PullRequest # 168
Agora você deve ver uma mensagem de erro mais específica.
Recebemos este erro específico sempre que a autenticação falhou.
Nota: Você deve atualizar para a versão 2.1.6-1 mais recente
Olá, Mark, @KasperSvendsen e @fpinab ,
apenas uma pequena atualização, já que você mencionou:
Na verdade, tenho meu usuário no AAD
Acredito que você esteja se referindo ao cenário de logon único do Office 365 para ADFS , esse fluxo não era compatível e é provavelmente a razão pela qual o erro fornecido ocorreu.
A boa notícia, o suporte para autenticação federada baseada em SAML com o SharePoint Online foi introduzido na versão 2.1.7
, o que significa autenticação com contas de usuário do Active Directory que devemos trabalhar como esperado agora.
Pré-requisitos
É assumido que a autenticação multifator para um usuário está desabilitada
Notas
como a nova versão ainda não foi lançada para o PyPi, ela precisa ser instalada do GitHub no momento, assim:
pip install git + https://github.com/vgrem/Office365-REST-Python-Client.git
Saúde,
Vadim
@vgrem
Eu atualizei para a nova versão para tentar oferecer suporte ao cenário ADFS. mas eu ainda não funciona.
abaixo está o exemplo de código:
from office365.runtime.auth.authentication_context import AuthenticationContext
account = "[email protected]"
password = "example"
url = "https://example.sharepoint.com/sites/base-dok-testing"
ctx_auth = AuthenticationContext(url)
ctx_auth.acquire_token_for_user(account, password)
abaixo está o log:
16/Jun/2020 10:18:15] DEBUG [none] [office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_token:acquire_token:45] acquire_token called
[16/Jun/2020 10:18:15] DEBUG [none] [office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_token:acquire_token:48] Acquiring Access Token..
[16/Jun/2020 10:18:15] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): login.microsoftonline.com:443
[16/Jun/2020 10:18:16] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://login.microsoftonline.com:443 "POST /GetUserRealm.srf HTTP/1.1" 200 1448
[16/Jun/2020 10:18:16] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): fs.kerialis.fr:443
[16/Jun/2020 10:18:20] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://fs.kerialis.fr:443 "POST /adfs/services/trust/2005/usernamemixed HTTP/1.1" 200 6542
[16/Jun/2020 10:18:20] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): login.microsoftonline.com:443
[16/Jun/2020 10:18:21] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://login.microsoftonline.com:443 "POST /rst2.srf HTTP/1.1" 200 3499
[16/Jun/2020 10:18:21] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): kerialisfr.sharepoint.com:443
[16/Jun/2020 10:18:21] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://kerialisfr.sharepoint.com:443 "HEAD /sites/base-dok-testing/_vti_bin/idcrl.svc HTTP/1.1" 401 0
[16/Jun/2020 10:18:21] ERROR [none] [office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_authentication_cookie:acquire_authentication_cookie:208] An error occurred while retrieving auth cookies from https://kerialisfr.sharepoint.com/sites/base-dok-testing/_vti_bin/idcrl.svc
@Simplici , você tem certeza de que a versão v2.1.8
ou posterior é utilizada por você?
Caso contrário, você pode se deparar com o mesmo problema relatado aqui .
@vgrem eu estava usando 2.1.7.post1.
eu atualizo para a versão mais recente 2.1.9, o resultado é o mesmo.
meu colega fez algumas modificações e então funciona: https://github.com/vgrem/Office365-REST-Python-Client/issues/210.
@vgrem Tenho o mesmo problema. O código a seguir retorna o erro "Ocorreu um erro ao recuperar cookies de autenticação de https://company.sharepoint.com/_vti_bin/idcrl.svc "
Também tenho 2.1.7.post1 instalado, mas não tenho acesso de administrador para verificar a autenticação multifator.
de office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File
url = ' https://company.sharepoint.com '
nome de usuário = ' [email protected] '
senha = 'xxx'
ctx_auth = AuthenticationContext (url)
if ctx_auth.acquire_token_for_user (nome de usuário, senha):
ctx = ClientContext (url, ctx_auth)
web = ctx.web
...
Comentários muito úteis
Funciona pra mim também. O URL também pode ser algo como " https://mycompany.sharepoint.com/sites/AnotherSite " ou " https://mycompany.sharepoint.com/sites/AnotherSite/Subsite "
Em vez disso, tente com este código: