Estou tentando fazer download de um arquivo que pode ser acessado (por meio de um navegador) neste URL:
https://test.sharepoint.com/sites/team/team documents / subfolder / document.docx
Estou usando um objeto ClientRequest com o seguinte código:
url = "https://test.sharepoint.com/sites/team"
username="[email protected]"
password="pass"
ctxAuth = AuthenticationContext(url)
if ctxAuth.acquire_token_for_user(username, password):
print 'authentication successful, proceeding...'
request = ClientRequest(ctxAuth)
requestUrl="{0}/_api/web/getfilebyserverrelativeurl('team documents/subfolder/document.docx')"
options=RequestOptions(requestUrl.format(url))
data = request.execute_query_direct(options)
Ao executar isso, estou obtendo o seguinte rastreamento:
$ python test.py
No handlers could be found for logger "client.office365.runtime.auth.saml_token_provider.SamlTokenProvider.process_service_token_response"
authentication successful, proceeding...
Traceback (most recent call last):
File "test.py", line 14, in <module>
data = request.execute_query_direct(options)
File "/usr/lib/python2.7/site-packages/client/office365/runtime/client_request.py", line 77, in execute_query_direct
self.context.authenticate_request(request_options)
File "/usr/lib/python2.7/site-packages/client/office365/runtime/auth/authentication_context.py", line 20, in authenticate_request
request_options.set_header('Cookie', self.provider.get_authentication_cookie())
File "/usr/lib/python2.7/site-packages/client/office365/runtime/auth/saml_token_provider.py", line 65, in get_authentication_cookie
return 'FedAuth=' + self.FedAuth + '; rtFa=' + self.rtFa
TypeError: cannot concatenate 'str' and 'NoneType' objects
Há algo errado em como uso o módulo?
Tive um problema semelhante porque nossa instância do SharePoint está sendo executada por trás de um proxy. Tive que criar uma subclasse de SamlTokenProvider
para substituir o url de login ( self.sts
) e os nomes dos cookies. Acho que o problema é que durante a inicialização, o código não verifica o resultado de acquire_authentication_cookie
portanto, se a autenticação falhar, você não ouvirá sobre isso até que os cookies sejam usados.
Eu tive o mesmo problema. Parece que as falhas de autenticação não são tratadas por exceções. Ele só surge quando os cookies são consultados. Verifique suas credenciais
Mesmo problema. Credenciais verificadas, mas o problema persiste. Quaisquer outros pensamentos? Obrigado!
Acabei usando OAuth2Session para obter autenticação oauth2 e obter dados da API gráfica. Já faz um tempo e não me lembro mais dos detalhes exatos.
Obrigado, vou verificá-lo.
Olá, estou com o mesmo problema, mas no meu caso acho que é porque tenho o sharepoint configurado com o método FormAuthentication. Não funcionará até que o provedor de token adequado seja implementado
Também estou encontrando esse problema, mas apenas se estiver usando uma conta do outlook.com. Espero que alguém possa explicar o que está acontecendo nos bastidores e talvez oferecer uma solução. Aqui está uma breve explicação:
1) Nosso site do SharePoint está na nuvem (https://mn365.sharepoint.com)
2) Quando eu faço a conexão com o site usando minhas credenciais do estado de Minnesota, ele se conecta perfeitamente.
3) Mas, como não quero ter minhas próprias credenciais incorporadas em meu aplicativo, criei uma "conta de serviço" nos moldes de " [email protected] ". Esta conta falha.
Qual seria a diferença na autenticação entre usar um endereço outlook.com e um emitido por minha organização (neste caso firstName. [email protected]?
Mesmo problema aqui. Estamos usando AD FS para autenticação. Até agora eu não encontrei nenhuma maneira de obter qualquer informação do nosso servidor online do sharepoint. Tentei muitas bibliotecas, mas nada funcionou para mim.
Eu tive o mesmo erro porque o sharepoint estava redirecionando para autenticação no STS / ADFS local.
Criamos um novo usuário do O365 diretamente no O365 para que ele não use o redirecionamento para o STS / ADFS local. Isso resolveu o erro 👍
Mudei para o sharepy, que funciona ootb e cobre minhas condições
Mesmo aqui:
Nenhum manipulador foi encontrado para o logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider._process_service_token_response"
Alguma sorte dos outros?
Talvez o seguinte ajude a restringir ainda mais.
Posso autenticar com sucesso na URL geral do sharepoint, mas não em uma URL que aponta para um canal de equipes específico. O seguinte código funciona bem:
url = "https://COMPANYNAME.sharepoint.com/"
username=raw_input("username: ")
password=raw_input("password: ")
ctx_auth = AuthenticationContext(url=url)
if ctx_auth.acquire_token_for_user(username=username, password=password):
Mas quando eu substituo o URL por:
url = "https://COMPANYNAME.sharepoint.com/sites/TEAMSCHANNEL/"
então recebo o seguinte erro:
No handlers could be found for logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_authentication_cookie"
Qualquer solução alternativa apreciada - no meu navegador, posso ver os dois perfeitamente.
Encontramos uma solução alternativa para o caso de uso acima. Basta usar o url de base para obter AuthenticationContext
. Novos objetos ClientContext
podem ser criados usando diferentes urls.
base_url = "https://COMPANYNAME.sharepoint.com/"
ctx_auth = AuthenticationContext(url=base_url)
if not ctx_auth.acquire_token_for_user(username=user, password=password):
sys.exit('Error in getting token - quitting')
url = base_url + "sites/TEAMSCHANNEL/"
ctx = ClientContext(url, ctx_auth)
..
..
Ei pessoal!
Desde o momento em que esse problema foi relatado até agora, as seguintes melhorias / correções de bugs foram feitas em termos de _suporte para autenticação federada baseada em SAML com o SharePoint Online_:
Portanto, o erro fornecido não deve ocorrer mais, apenas certifique-se de obter a versão _lima_ ( 2.1.10.1
ou superior).
Comentários muito úteis
Tive um problema semelhante porque nossa instância do SharePoint está sendo executada por trás de um proxy. Tive que criar uma subclasse de
SamlTokenProvider
para substituir o url de login (self.sts
) e os nomes dos cookies. Acho que o problema é que durante a inicialização, o código não verifica o resultado deacquire_authentication_cookie
portanto, se a autenticação falhar, você não ouvirá sobre isso até que os cookies sejam usados.