Office365-rest-python-client: خطأ في الفهرس: فهرس القائمة خارج النطاق

تم إنشاؤها على ٨ ديسمبر ٢٠٢٠  ·  14تعليقات  ·  مصدر: vgrem/Office365-REST-Python-Client

عزيزي السيد،
هل يمكنك مساعدتي في معرفة سبب عدم الاتصال بـ Sharepoint بعد الآن؟

مع الإصدار 2.2.2 كان كل شيء يعمل بشكل جيد.
ثم حدثت المشكلة رقم 272 (حدث خطأ أثناء استرداد الرمز المميز من استجابة XML: AADSTS500069) لذلك قمت بالترقية إلى 2.3.0.1.
الآن الكود التالي لا يعمل أيضًا:
def copy_sharepoint (self، filename = ""):
ctx = ClientContext (self.SITE_SHAREPOINT). with_credentials (UserCredential (self.WIN_USER، self.WIN_PASSWORD))
localpath = os.path.join (self.CHEMIN_XLSX، self.NOM_TIR + '/'،self.FICHIER_BI)
self.print_debug ("" ، مسار محلي)
self.print_debug ("" ، self.WIN_PASSWORD)
مع open (localpath، 'rb') كملف content_file:
file_content = content_file.read ()
file = ctx.web.get_folder_by_server_relative_url (self.CHEMIN_SHAREPOINT) .upload_file (self.FICHIER_BI، file_content) .execute_query ()

Traceback (آخر مكالمة أخيرة):
ملف "/appli/sopra/tools/tir_bench.py" ، السطر 1327 ، في
tir_bench.copy_sharepoint ()
ملف "/appli/sopra/tools/tir_bench.py" ، السطر 1278 ، في copy_sharepoint
file = ctx.web.get_folder_by_server_relative_url (self.CHEMIN_SHAREPOINT) .upload_file (self.FICHIER_BI، file_content) .execute_query ()
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_object.py" ، السطر 30 ، في execute_query
self.context.execute_query ()
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py" ، السطر 138 ، في execute_query
self.pending_request (). execute_query ()
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py" ، السطر 73 ، في execute_query
self.beforeExecute.notify (طلب)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/types/EventHandler.py" ، السطر 18 ، في التنبيه
المستمع (أرغس ، * كارجس)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py" ، السطر 162 ، في _build_modification_query
self.ensure_form_digest (طلب)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py" ، السطر 123 ، in sure_form_digest
طلب self.request_form_digest ()
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py" ، السطر 130 ، في request_form_digest
استجابة = self.execute_request_direct (طلب)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py" ، السطر 134 ، في execute_request_direct
return self.pending_request (). execute_request_direct (طلب)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/odata/odata_request.py" ، السطر 34 ، في execute_request_direct
إرجاع سوبر (ODataRequest ، ذاتي). execute_request_direct (request)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py" ، السطر 86 ، في execute_request_direct
self.context.authenticate_request (request_options)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py" ، السطر 151 ، في Authenticate_request
self._auth_context.authenticate_request (طلب)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/authentication_context.py" ، السطر 84 ، في Authenticate_request
self._provider.authenticate_request (طلب)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py" ، السطر 73 ، في Authenticate_request
self.ensure_authentication_cookie ()

ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py" ، السطر 80 ، في sure_authentication_cookie
self._cached_auth_cookies = self.get_authentication_cookie ()
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py" ، السطر 93 ، في get_authentication_cookie
الرمز المميز = self._acquire_service_token_from_adfs (user_realm.STSAuthUrl)
ملف "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py" ، السطر 136 ، في _acquire_service_token_from_adfs
assertion_node = dom.getElementsByTagNameNS ("urn: oasis: names: tc: SAML: 1.0: assertion"، "Assertion") [0] .toxml ()
خطأ في الفهرس: فهرس القائمة خارج النطاق

هل يمكنك مساعدتي في هذه المشكلة؟

شكرا لك مقدما،
غيوم

bug

ال 14 كومينتر

أهلا،
بالإضافة إلى ذلك ، ها هي قيمة response.content.decode ())

http://www.w3.org/2005/08/addressing/soap/faultcfb81633-ff49-4e50-9544-7e39214d7122
<value i="14">s:Sender</value><subcode i="15"><value i="16">a:InvalidSecurity</value></subcode>حدث خطأ أثناء التحقق من أمان الرسالة.

تحيات!

شكرًا لك على السجل التفصيلي ، في الوقت الحالي تفتقر إلى أي إمكانية للتحقق من صحة SharePoint / ADFS.

wreiner ، ربما يمكنك التفضل بتأكيد ما إذا كان _Federated Authentication_ يعمل كما هو متوقع من جانبك في الإصدار الأخير؟

مرحبا جميعا

أواجه مشكلات مماثلة ، السطر التالي يعطيني إجابة 400 أو 500.

https://github.com/vgrem/Office365-REST-Python-Client/blob/020c8c8176ce2eea3accbe95e2e4372af57ef6c8/office365/runtime/auth/providers/saml_token_provider.py#L133

في حالة حصولي على استجابة 400 ، يكون النص فارغًا مما يؤدي إلى استثناء xml.parsers.expat.ExpatError: no element found: line 1, column 0 . تعطي استجابة 500 نفس الاستثناء مثل @ guillaume-colas.

لم أحصل على الحزمة للعمل حتى الآن ، لذلك من الممكن أن يكون خادم sharepoint ، لكنني سأحاول تخفيض الحزمة فقط للتأكد. كيف يمكنني التأكد من إعداد مصادقة SharePoint بشكل صحيح؟

شكرا مقدما!

أهلا،

لست على جهاز الكمبيوتر الخاص بي لإجراء التحليل الكامل ولكن كما أراه ، عندما أقوم بتثبيت أحدث إصدار مع pip ، تكون الوظيفة _acquire_service_token_from_adfs_ مفقودة من _runtime / auth / Provider / saml_token_provider.py_.

في طلب السحب الخاص بي ، لا توجد إزالة لهذه الوظيفة ، لذا لست متأكدًا من سبب فقدها. كما أن إصلاحي لتنسيق التاريخ والوقت ليس في الملف. ربما كان هناك خطأ في الدمج؟

wreiner شكرًا لك على العودة ، بخصوص

get_service_token_from_adfs مفقود

تمت إعادة بنائه من الطريقة العامة إلى الخاصة .

إصلاحي لتنسيق التاريخ والوقت ليس في الملف

يجب أن يكون التنسيق في مكانه كما تم الالتزام به في الأصل ، ولكن تم إعادة بنائه من حيث نقل الإعلان إلى sts_profile.py

self.created = now.astimezone(timezone.utc).isoformat('T')[:-9] + 'Z' self.expires = (now + timedelta(minutes=10)).astimezone(timezone.utc).isoformat('T')[:-9] + 'Z'

ولكن إذا كان هناك شيء مفقود بعد الدمج ، فيجب أن ألوم.

مرحبا جميعا

أواجه مشكلات مماثلة ، السطر التالي يعطيني إجابة 400 أو 500.

https://github.com/vgrem/Office365-REST-Python-Client/blob/020c8c8176ce2eea3accbe95e2e4372af57ef6c8/office365/runtime/auth/providers/saml_token_provider.py#L133

في حالة حصولي على استجابة 400 ، يكون النص فارغًا مما يؤدي إلى استثناء xml.parsers.expat.ExpatError: no element found: line 1, column 0 . تعطي استجابة 500 نفس الاستثناء مثل @ guillaume-colas.

لم أحصل على الحزمة للعمل حتى الآن ، لذلك من الممكن أن يكون خادم sharepoint ، لكنني سأحاول تخفيض الحزمة فقط للتأكد. كيف يمكنني التأكد من إعداد مصادقة SharePoint بشكل صحيح؟

شكرا مقدما!

أهلا مارك،

شكرا لتأكيد ذلك ، يبدو بالفعل في أحدث إصدار من المصادقة الموحدة (SharePoint / ADFS) معطلة إلى حد ما
هل يمكنك من فضلك تجربته مع الإصدار _السابق_ ( 2.2.2

لا أجري تحليلًا كاملاً ولكن بالنسبة للتغييرات التي أجريتها ، يمكنني القول أنها تعيد رمز الأمان وملف تعريف الارتباط بشكل صحيح ولكن ملف تعريف الارتباط لا يحتوي على حقل "FedAuth" الذي يتم البحث عنه في ملفات تعريف الارتباط is_valid_auth_cookies التي يتم استخدامها الآن في _get_authentication_cookie.

https://github.com/vgrem/Office365-REST-Python-Client/blob/93325ea33675b86aafc2e6e0fa381c184ce479e7/office365/runtime/auth/providers/saml_token_provider.py#L32

للمصادقة الموحدة ، أرى فقط SPOIDCRL في الجرة.

ما زلت حاليًا غير قادر على استخدام بيانات المصادقة التي تم الحصول عليها بشكل صحيح ، وما زلت أقوم بالتحقيق ولكن لا يمكنني تحديد المدة التي سأحتاج إليها.

بشكل عام ، يمكنني أن أقول أنه مع الإصدار القديم وتصحيحاتي ، لا يزال كل شيء يعمل بشكل جيد كما هو متوقع ولكن للأسف ليس مع الإصدار الجديد.

شكرا على الاستجابة السريعة :-)

vgrem حصل على خطأ مشابه في الإصدار 2.2.2 ، لذلك يبدو أنه خادم sharepoint.

قد يكون من الجيد لف الاستثناء في استثناء أكثر قابلية للقراءة.

أنا خطوة أخرى إلى الأمام. تبين أنني بحاجة إلى إعادة تعيين كلمة المرور الخاصة بي. أنا الآن أواجه نفس الخطأ مثلwreiner. يعيد is_valid_auth_cookies أن ملف تعريف الارتباط غير صالح ، لأن القاموس يحتوي فقط على مفتاح SPOIDCRL ولا يحتوي على مفتاح FedAuth. إذا قمت للتو بالتعليق على هذا التحقق مما إذا كان ملف تعريف الارتباط صالحًا أم لا. أنا قادر على تنزيل الملفات من Sharepoint. لذلك يبدو أن المصادقة تعمل بشكل جيد.

ربما سأحاول الإصدار 2.2.2 مرة أخرى.

لدي نفس المشكلة. is_valid_auth_cookies return False بسبب عدم وجود مفتاح FedAuth في ملفات تعريف الارتباط. إذا قمت بالتعليق على رمز الإرجاع وتبسيط إرجاع True ، فستعمل المصادقة بشكل جيد.

def is_valid_auth_cookies(values):
    return True
    # return any(values) and values.get('FedAuth', None) is not None

يا @ hungnguyen95 ، شكرا لتأكيد ذلك!

تبين أن is_valid_auth_cookies يحتاج إلى تعديل.

أهلا،
هل سيتم إصلاح مشكلتي عن طريق تعديل is_valid_auth_cookies؟

أنا تائه تمامًا هنا آسف. اعتقدت أن مشكلتي كانت في _acquire_service_token_from_adfs.
هل لديك أي فكرة عن سبب تلقيي استجابة "أمان غير صالح" ونأمل أن يكون حلًا بديلًا للمصادقة؟

شكرا مقدما لمساعدتكم.
غيوم

@ guillaume-colas يبدو أن مشكلتك ربما تتعلق بالخادم الذي لا يسمح لك بالوصول. هل أنت متأكد من صحة كلمة المرور وهل حاولت إعادة تعيين كلمة المرور الخاصة بك؟ إعادة تعيين كلمة المرور الخاصة بي حل هذه المشكلة. بعد ذلك واجهت مشكلة is_valid_auth_cookies .

@ mark-boer نعم لقد تحققت من كلمة المرور وهي صحيحة. هل من الممكن أن تكون المصادقة باستخدام 2FA (رمز الرسائل القصيرة) تمنع المصادقة؟

هل من الممكن استخدام ClientCredentials لتحميل الملفات إلى SharePoint؟

شكرا مقدما لمساعدتكم

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات