Halo yang disana,
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
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 !
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