Office365-rest-python-client: "TypeError: لا يمكن ربط كائنات 'str' و 'NoneType' عند الطلب للحصول على ملف.

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

أحاول تنزيل ملف يمكن الوصول إليه (عبر مستعرض) على عنوان URL هذا:
https://test.sharepoint.com/sites/team/team documents / subfolder / document.docx

أنا أستخدم كائن ClientRequest بالشفرة التالية:

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)

عند تشغيل هذا ، أتلقى التتبع التالي:

$ 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

هل هناك خطأ ما في كيفية استخدامي للوحدة؟

bug

التعليق الأكثر فائدة

واجهت مشكلة مماثلة لأن مثيل SharePoint الخاص بنا يعمل خلف وكيل. اضطررت إلى فئة فرعية SamlTokenProvider لتجاوز عنوان url لتسجيل الدخول ( self.sts ) وأسماء ملفات تعريف الارتباط. أعتقد أن المشكلة تكمن في أنه أثناء التهيئة ، لا يتحقق الرمز من نتيجة acquire_authentication_cookie لذلك إذا فشلت المصادقة ، فلن تسمع عنها حتى يتم استخدام ملفات تعريف الارتباط.

ال 14 كومينتر

واجهت مشكلة مماثلة لأن مثيل SharePoint الخاص بنا يعمل خلف وكيل. اضطررت إلى فئة فرعية SamlTokenProvider لتجاوز عنوان url لتسجيل الدخول ( self.sts ) وأسماء ملفات تعريف الارتباط. أعتقد أن المشكلة تكمن في أنه أثناء التهيئة ، لا يتحقق الرمز من نتيجة acquire_authentication_cookie لذلك إذا فشلت المصادقة ، فلن تسمع عنها حتى يتم استخدام ملفات تعريف الارتباط.

واجهتني نفس المشكلة. يبدو أن حالات فشل المصادقة لا يتم التعامل معها من خلال الاستثناءات. انها فقط الفقاعات عندما يتم الاستعلام عن ملفات تعريف الارتباط. تحقق من بيانات الاعتماد الخاصة بك

المشكلة نفسها. تم التحقق من بيانات الاعتماد ولكن استمرت المشكلة. أي أفكار أخرى؟ شكرا!

انتهى بي الأمر باستخدام OAuth2Session للحصول على مصادقة oauth2 والحصول على البيانات من واجهة برمجة تطبيقات الرسم البياني. لقد مر وقت ولم أعد أتذكر التفاصيل الدقيقة.

شكرا، سوف تحقق من ذلك.

مرحبًا ، لدي نفس المشكلة ، ولكن في حالتي أعتقد أن السبب هو أنني قمت بتكوين SharePoint باستخدام طريقة FormAuthentication. بأي حال من الأحوال ستعمل حتى يتم تنفيذ موفر الرمز المميز المناسب

أنا أواجه هذه المشكلة أيضًا ولكن فقط إذا كنت أستخدم حساب outlook.com. آمل أن يتمكن شخص ما من شرح ما يجري وراء الكواليس وربما يقدم حلاً. وفيما يلي شرح موجز:

1) موقع SharePoint الخاص بنا في السحابة (https://mn365.sharepoint.com)
2) عندما أقوم بالاتصال بالموقع باستخدام بيانات اعتماد ولاية مينيسوتا الخاصة بي ، فإنه يتصل بشكل جيد.
3) ولكن نظرًا لأنني لا أرغب في تضمين بيانات الاعتماد الخاصة بي في طلبي ، فقد قمت بإنشاء "حساب خدمة" على غرار " [email protected] ". فشل هذا الحساب.

ما هو الاختلاف في المصادقة بين استخدام عنوان outlook.com وآخر صادر عن مؤسستي (في هذه الحالة firstName. [email protected]؟

نفس المشكلة هنا. نحن نستخدم AD FS للمصادقة. حتى الآن لم أجد أي طريقة للحصول على أي معلومات من خادم Sharepoint عبر الإنترنت الخاص بنا. لقد جربت الكثير من المكتبات ولكن لا شيء يعمل معي.

كان لدي نفس الخطأ لأن Sharepoint كان يعيد التوجيه للمصادقة على STS / ADFS الداخلي.

لقد أنشأنا مستخدم O365 جديدًا مباشرةً في O365 لذلك لا يستخدم إعادة التوجيه إلى STS / ADFS داخل الشركة. هذا حل الخطأ 👍

لقد تحولت إلى Sharepy ، الذي يدير ootb ويغطي ظروفي

كذلك هنا:
تعذر العثور على معالجات لأداة التسجيل "office365.runtime.auth.saml_token_provider.SamlTokenProvider._process_service_token_response"

أي حظ من الآخرين؟

ربما يساعد ما يلي في تضييقه أكثر.

يمكنني المصادقة بنجاح على عنوان URL العام لـ Sharepoint ، ولكن ليس على عنوان URL يشير إلى قناة فرق محددة. الجزء التالي من التعليمات البرمجية يعمل بشكل جيد:

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

ولكن عندما استبدل عنوان URL بـ:

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

ثم أحصل على الخطأ التالي:

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

يتم تقدير أي حل بديل - في متصفحي يمكنني رؤية كلاهما على ما يرام.

وجدنا حلاً لحالة الاستخدام المذكورة أعلاه. ما عليك سوى استخدام عنوان url الأساسي للحصول على AuthenticationContext . يمكن إنشاء كائنات ClientContext باستخدام عناوين url مختلفة.

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

مرحبا شباب!

منذ اللحظة التي تم فيها الإبلاغ عن هذه المشكلة حتى الآن ، تم إجراء التحسينات / إصلاحات الأخطاء التالية من حيث _دعم المصادقة الموحدة المستندة إلى SAML مع SharePoint Online_:

  • # 210 - غير قادر على الاتصال بـ SharePoint (خطأ write_authentication_cookie إذا تم توحيده)
  • # 170 - حدث خطأ أثناء استرداد الرمز المميز: AADSTS50126: خطأ في التحقق من صحة بيانات الاعتماد بسبب اسم مستخدم أو كلمة مرور غير صالحة
  • # 85 - استخدام Office-365-REST مع ADFS
  • 84 - المواقع التي تحتوي على STS داخل الشركة لا تصادق (AADSTS70002)

لذلك ، يجب ألا يحدث الخطأ المقدم بعد الآن ، فقط تأكد من الحصول على الإصدار _ الأحدث ( 2.1.10.1 أو أعلى).

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