Office365-rest-python-client: "TypeError: tidak dapat menggabungkan objek 'str' dan 'NoneType'" berdasarkan permintaan untuk mendapatkan file.

Dibuat pada 12 Jun 2017  ·  14Komentar  ·  Sumber: vgrem/Office365-REST-Python-Client

Saya mencoba mengunduh file yang dapat diakses (melalui browser) di URL ini:
https://test.sharepoint.com/sites/team/team documents/subfolder/document.docx

Saya menggunakan objek ClientRequest dengan kode berikut:

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)

Saat menjalankan ini, saya mendapatkan jejak berikut:

$ 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

Apakah ada yang salah dengan cara saya menggunakan modul?

bug

Komentar yang paling membantu

Saya memiliki masalah serupa karena instance SharePoint kami berjalan di belakang proxy. Saya harus mensubklasifikasikan SamlTokenProvider untuk mengganti url login ( self.sts ) dan nama cookie. Saya pikir masalahnya adalah selama inisialisasi, kode tidak memeriksa hasil acquire_authentication_cookie jadi jika otentikasi gagal, Anda tidak akan mendengarnya sampai cookie digunakan.

Semua 14 komentar

Saya memiliki masalah serupa karena instance SharePoint kami berjalan di belakang proxy. Saya harus mensubklasifikasikan SamlTokenProvider untuk mengganti url login ( self.sts ) dan nama cookie. Saya pikir masalahnya adalah selama inisialisasi, kode tidak memeriksa hasil acquire_authentication_cookie jadi jika otentikasi gagal, Anda tidak akan mendengarnya sampai cookie digunakan.

Saya mengalami masalah yang sama. Sepertinya kegagalan otentikasi tidak ditangani oleh pengecualian. Itu hanya menggelembung ketika cookie ditanyai. Periksa kredensial Anda

Masalah yang sama. Kredensial diperiksa tetapi masalah tetap ada. Ada pemikiran lain? Terima kasih!

Saya akhirnya menggunakan OAuth2Session untuk mendapatkan otentikasi oauth2 dan mengambil data dari grafik api. sudah lama dan saya tidak lagi ingat detail persisnya.

Terima kasih akan memeriksanya.

Hai, saya memiliki masalah yang sama, tetapi dalam kasus saya, saya pikir itu karena saya memiliki sharepoint yang dikonfigurasi dengan metode FormAuthentication. Tidak mungkin itu akan berhasil sampai penyedia token yang tepat diimplementasikan

Saya juga mengalami masalah ini, tetapi hanya jika saya menggunakan akun Outlook.com. Saya berharap seseorang dapat menjelaskan apa yang terjadi di balik layar dan mungkin menawarkan solusi. Berikut penjelasan singkatnya:

1) Situs SharePoint kami ada di cloud (https://mn365.sharepoint.com)
2) Ketika saya membuat koneksi ke situs menggunakan kredensial State of Minnesota saya, itu terhubung dengan baik.
3) Tetapi karena saya tidak ingin memiliki kredensial saya sendiri yang disematkan di aplikasi saya, saya membuat "akun layanan" di sepanjang baris " [email protected] ". Akun ini gagal.

Apa perbedaan dalam otentikasi antara menggunakan alamat outlook.com dan yang dikeluarkan oleh organisasi saya (dalam hal ini firstName. [email protected]?

Masalah yang sama disini. Kami menggunakan AD FS untuk otentikasi. Sampai sekarang saya tidak menemukan cara untuk mendapatkan informasi apapun dari server online sharepoint kami. Saya mencoba banyak perpustakaan tetapi tidak ada yang berhasil untuk saya.

Saya memiliki kesalahan yang sama karena sharepoint dialihkan untuk otentikasi ke STS/ADFS lokal.

Kami membuat pengguna O365 baru secara langsung di O365 sehingga tidak menggunakan pengalihan ke STS/ADFS lokal. Ini menyelesaikan kesalahan 👍

Saya beralih ke sharepy, yang menjalankan ootb dan mencakup kondisi saya

Sama disini:
Tidak ada penangan yang dapat ditemukan untuk logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider._process_service_token_response"

Adakah keberuntungan dari orang lain?

Mungkin yang berikut ini membantu mempersempitnya lebih jauh.

Saya dapat berhasil mengautentikasi pada URL sharepoint umum, tetapi tidak pada URL yang menunjuk ke saluran tim tertentu. Sedikit kode berikut berfungsi dengan baik:

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):

Tetapi ketika saya mengganti URL dengan:

url = "https://COMPANYNAME.sharepoint.com/sites/TEAMSCHANNEL/"

maka saya mendapatkan kesalahan berikut ::

No handlers could be found for logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_authentication_cookie"

Solusi apa pun dihargai - di browser saya, saya dapat melihat keduanya dengan baik.

Kami menemukan solusi untuk kasus penggunaan di atas. Cukup gunakan url dasar untuk mendapatkan AuthenticationContext . Objek ClientContext dapat dibuat menggunakan url yang berbeda.

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)
..
..

Hai teman-teman!

Sejak saat masalah ini dilaporkan hingga sekarang, peningkatan/perbaikan bug berikut telah dilakukan dalam hal _dukungan untuk autentikasi gabungan berbasis SAML dengan SharePoint Online_:

  • #210 - Tidak dapat menyambung ke SharePoint (kesalahan memperoleh_authentication_cookie jika federasi)
  • #170 - Terjadi kesalahan saat mengambil token: AADTS50126: Kesalahan memvalidasi kredensial karena nama pengguna atau kata sandi yang tidak valid
  • #85 - Menggunakan Office-365-REST dengan ADFS
  • #84 - Situs dengan STS lokal tidak mengautentikasi (AADSTS70002)

Jadi, kesalahan yang diberikan seharusnya tidak lagi terjadi, pastikan untuk mengambil versi _terbaru_ ( 2.1.10.1 atau lebih tinggi).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat