こんにちは、
私はバージョン2.1.7.post1 ( 。SharePointにログインするためにMFAは必要ありません。
私は現在、次のスクリプト(プロジェクトのREADMEから作成)を使用して、会社のSharePointからExcelファイルを取得しようとしています。
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']))
このスクリプトを実行すると、次の出力が得られます。
An error occurred while retrieving auth cookies from https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc
このスクリプトをデバッグモードで実行すると、問題はクラスSamlTokenProvider
のメソッドacquire_authentication_cookie
に起因することに気付きました。
実際には、メソッドはfederated=True
呼び出されるため、HTTPリクエストはhttps://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svcでHEADメソッドを使用して実行され
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
応答にCookieが含まれていないため、メッセージエラーが発生します。
ちなみに、URLを「 https://mycompany.sharepoint.com 」に設定しても同じ問題が発生しました。
問題について十分な詳細を提供していない場合はお知らせください。
前もって感謝します !
この問題に関するいくつかのニュース:
curlを使用してhttps://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svcにHEADリクエストを送信すると、 。 (応答コード:307)。
だから私はこのリンクにHEADリクエストをしました、私はメソッドが許可されていない応答を受け取りました...
問題は私の会社側から来ていると思います。
ご挨拶!
提供された詳細をありがとう!
2.1.7.post1
は現在少し古くなっています。もう一度試してみてください。ただし、_latest_バージョン(現時点では2.1.10.1
)を使用すると、GitHubからダウンロードできます。
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
または代替インデックスから
それ以来、認証に関していくつかのバグ修正が解決されています。
私は最後のバージョンをインストールしました、そしてそれはうまくいきます! (それは実際にそれを解決するのは非常に簡単でした!:))
助けてくれてありがとう:D