Office365-rest-python-client: Terjadi kesalahan saat mengambil cookie auth dari https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc

Dibuat pada 5 Agu 2020  ·  3Komentar  ·  Sumber: vgrem/Office365-REST-Python-Client

Halo yang disana,

Konteks masalah

Saya bekerja dengan versi 2.1.7.post1 (menurut pip freeze), tidak ada MFA yang diperlukan untuk login sharepoint.
Saat ini saya mencoba untuk mendapatkan file excel dari sharepoint perusahaan, dengan skrip berikut (dibuat dari README proyek):

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File

url = 'https://mycompany.sharepoint.com/sites/documentssite/'

ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
    ctx = ClientContext(url, ctx_auth)
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()
    print("Web title: {0}".format(web.properties['Title']))

Menjalankan skrip ini memberikan output berikut:
An error occurred while retrieving auth cookies from https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc

Beberapa detail tentang masalah ini

Saya perhatikan dengan menjalankan skrip ini dalam mode debug, bahwa masalahnya berasal dari metode acquire_authentication_cookie dari kelas SamlTokenProvider
Sebenarnya metode tersebut dipanggil dengan federated=True sehingga permintaan HTTP dilakukan di https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc dengan metode HEAD. Anda dapat menemukan di bawah bagian yang gagal:

     def acquire_authentication_cookie(self, security_token, federated=False):
        ...
        else:
            self._auth_cookies['SPOIDCRL'] = None
            session.head(self.__sts_profile.signInPageUrl,
                         headers={
                             'User-Agent': 'Office365 Python Client',
                             'X-IDCRL_ACCEPTED': 't',
                             'Authorization': 'BPOSIDCRL {0}'.format(security_token),
                             'Content-Type': 'application/x-www-form-urlencoded'
                         })
        logger.debug_secrets("session.cookies: %s", session.cookies)
        cookies = requests.utils.dict_from_cookiejar(session.cookies)
        logger.debug_secrets("cookies: %s", cookies)
        if not cookies:
            self.error = "An error occurred while retrieving auth cookies from {0}".format(self.__sts_profile.signInPageUrl)
            logger.error(self.error)
            return False

Responsnya tidak mengandung cookie apa pun, itu sebabnya saya mendapatkan pesan kesalahan.

Omong-omong, saya mendapat masalah yang sama ketika saya mengatur url ke ' https://mycompany.sharepoint.com '.

Beri tahu saya jika saya belum memberikan detail yang cukup tentang masalah ini.
Terima kasih sebelumnya !

question

Semua 3 komentar

Beberapa berita tentang masalah ini:

Ketika saya membuat permintaan HEAD ke https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc dengan curl, saya dialihkan ke https://mycompany.sharepoint.com/_vti_bin/idcrl.svc/ (kode tanggapan : 307).

Jadi saya membuat permintaan HEAD ke tautan ini, saya mendapat respons Metode Tidak Diizinkan ...
Saya kira masalahnya datang dari sisi perusahaan saya..

Salam pembuka!

Terima kasih atas detail yang diberikan!

2.1.7.post1 agak ketinggalan jaman saat ini, bisakah Anda mencobanya lagi tetapi dengan versi _terbaru ( 2.1.10.1 saat ini), dapat diunduh melalui GitHub:

pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

atau dari indeks alternatif

Beberapa perbaikan bug telah diselesaikan sejak saat itu dalam hal otentikasi.

Saya menginstal versi terakhir dan berfungsi dengan baik! (Itu sebenarnya cukup sederhana untuk menyelesaikannya! :))
Terima kasih atas bantuannya :D

Apakah halaman ini membantu?
0 / 5 - 0 peringkat