Office365-rest-python-client: غير قادر على استخدامه لبايثون 3

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

هل هناك مشكلة في Python 3؟

bug enhancement

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

@ vic-by يعمل التزام حديث على إصلاح المشكلة: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
لاحظ أنه في هذا الوقت ، لم يتم دفع هذا الالتزام بعد على pypi. لذلك إذا قمت بإجراء pip install Office365-REST-Python-Client فلن تحصل على هذا الرمز. التثبيت من git سوف: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

ال 24 كومينتر

أهلا،

يجب أن يكون متوافقًا مع كلا الإصدارين من Python: 2 و 3 ، لكن دعني أتحقق من ذلك. سوف نعود اليكم.

مرحبا شكرا على الرد السريع.
يوجد أدناه الخطأ الذي أواجهه
"------------------------------------------------- --------------------------
ModuleNotFoundError Traceback (آخر مكالمة أخيرة)
في()
1 استيراد json
2
----> 3 من office365.runtime.auth.authentication_context استيراد المصادقة السياق
4 من office365.runtime.client_request استيراد ClientRequest
5 من office365.runtime.utilities.request_options import RequestOptions

ModuleNotFoundError: لا توجد وحدة باسم "office365 "`

ونعم ، لدي نقطة تثبيت النموذج :)

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

url = " https://login.microsoftonline.com/extSTS.srf "
headers = {'content-type': 'application / json'}
TopLevelUrl = ' https://XXXX.sharepoint.com '
المسار = 'C: \ PSR \ PythonFiles \ SharePointOnlineXML.txt'

filecontent = مفتوح (مسار ، 'r')
SharepointOnlineAuth = filecontent.read ()
SharepointOnlineAuth = SharepointOnlineAuth.format ('[email protected] '،' كلمة المرور '، TopLevelUrl)

دعنا نجري مكالمة للحصول على الرمز من أجل الحصول على ملفات تعريف الارتباط

response = request.post (url، data = SharepointOnlineAuth، headers = headers)
s = str (response.content)
ابدأ = [نقطة البيع في النطاق (len (s)) إذا كان [pos:]. startswith ('')] [0]
Finish = [pos for pos in range (len (s)) if s [pos:]. startswith ('
')] [0]
LoginResponse = s [Start + 40: Finish]

الآن ، لنجلب ملفات تعريف الارتباط لإجراء اتصال بـ SharePoint Online

url = TopLevelUrl + '/ _ Forms / default.aspx؟ wa = wsignin1.0'
headers = {'content-type': 'application / x-www-form-urlencoded'}
response = request.post (url، data = LoginResponse، headers = headers)

استدعاء Sharepoint REST Api باستخدام ملفات تعريف الارتباط التي تم الحصول عليها من المكالمة أعلاه

url = TopLevelUrl + '/ _ api / web / siteusers'
طباعة (url)
_Fedauth = 'FedAuth = {}'. تنسيق (response.cookies ['FedAuth'])
_rtFa = 'rtFa = {}'. تنسيق (response.cookies ['rtFa'])
_FinalDict = {'ملف تعريف الارتباط': _ Fedauth + '،' + _ rtFa}

headers = {'Content-Type': 'application / x-www-form-urlencoded'،
"User-Agent": "Mozilla / 5.0 (Windows NT 10.0؛ Win64؛ x64) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 59.0.3071.115 Safari / 537.36"}
headers.update (_FinalDict)

طباعة (رؤوس)

response = request.get (url، headers = headers)
طباعة (استجابة) `

الحصول على خطأ في python3.4:

_Traceback (آخر مكالمة أخيرة):
ملف "auth_sharepoint_online365.py" ، السطر 2 ، بتنسيق
من office365.runtime.auth.authentication_context استيراد AuthenticationContext
ملف "Authentication_context.py" ، السطر 2 ، بتنسيق
من office365.runtime.auth.saml_token_provider استيراد SamlTokenProvider
ملف "saml_token_provider.py" ، السطر 2 ، بتنسيق
استيراد urlparse
خطأ في الاستيراد: لا توجد وحدة باسم ' urlparse ' _

وفقًا لـ https://docs.python.org/2/library/urlparse.html :

تمت إعادة تسمية وحدة urlparse إلى urllib.parse في Python 3.

جرب https://github.com/parthrawal/Python.O365 لقد كتبت ملف .py يمكنه الاتصال بـ SharePoint Online ولديه بعض الطرق للحصول على البيانات من القوائم بتنسيق القاموس. اسمحوا لي أن أعرف إذا كنت بحاجة إلى أي مساعدة في ذلك.

@ vic-by يعمل التزام حديث على إصلاح المشكلة: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
لاحظ أنه في هذا الوقت ، لم يتم دفع هذا الالتزام بعد على pypi. لذلك إذا قمت بإجراء pip install Office365-REST-Python-Client فلن تحصل على هذا الرمز. التثبيت من git سوف: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

لا يزال هناك عمل مطلوب للحصول على المكتبة بالفعل باستخدام Python 3.

لقد واجهت مشكلة في الترميز عند تشغيل المكتبة باستخدام بيثون 3. لقد حدث ذلك عند عمل list.properties لكنني متأكد من أن المشكلة محورية.

    ctx = ClientContext(url, ctx_auth)
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()
    lists = web.lists
    ctx.load(lists)
    ctx.execute_query()
    lists[0].properties
 in <module>()
---> 16         lists[0].properties

c:\python\python35\lib\encodings\cp850.py in encode(self, input, final)
     17 class IncrementalEncoder(codecs.IncrementalEncoder):
     18     def encode(self, input, final=False):
---> 19         return codecs.charmap_encode(input,self.errors,encoding_map)[0]
     20
     21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position 11052: character maps to <undefined>

أواجه نفس المشكلة مع Python 3: "ModuleNotFoundError: لا توجد وحدة تسمى 'urlparse'"
اختبار ملف SharePointOnline.py: فشل المصادقة -> كلمات المرور المدخلة والمخزنة غير متطابقة.

هل جربت هذا الرابط https://github.com/parthrawal/Python.O365 تأكد من استخدام حساب الخدمة لنفسه

نعم فعلا. انسخ / الصق الكود ، في الأسفل:

if __name__ == "__main__":
    UserName = "[email protected]"
    # UserName = "[email protected]"
    Password = "my_password"
    TopLevelUrl = "https://company.sharepoint.com/"
    SPOnlineHeaders(UserName, Password, TopLevelUrl)

تم إرجاع الخطأ التالي:

....
IndexError: list index out of range

للحصول على مزيد من التفاصيل حول الخطأ ، قمت بإدراج الرمز التالي (طباعة) في SPOnlineHeaders:

response = requests.post(url, data=SharepointOnlineAuth, headers=headers)
s = str(response.content)
print(s)

إجابة:
... wst: FailedAuthentication ... كلمات المرور التي متطابقة ...

آمل أن يكون ما تستخدمه هو حساب خدمة

هذا صحيح. أنا أستخدم حساب الخدمة.

هل كلمة السر صحيحة؟ هل يمكنك إعادة التحقق من ذلك من فضلك. لأنني حاولت تشغيل الكود ، إنه يعمل بشكل جيد. ولكن عندما أدخلت كلمة مرور خاطئة ، ألقى خطأ "IndexError: list index out of range".

نعم فعلا. كلمة المرور صحيحة. هذا ما يحدث عند القيام بتسجيل الدخول يدويًا.

أكتب الرابط في المتصفح: https://company.sharepoint.com/

عند الضغط على إدخال ، تتم إعادة توجيهي إلى صفحة تسجيل الدخول: https://login.microsoftonline.com/575...71a/oauth2/authorize؟client_id=...&response_mode=form_post&response_type=code٪20id_token&resource=...&scope=openid&nonce = .... & redirect_uri = https :٪ 2F٪ 2Fcompany.sharepoint.com٪ 2F_forms٪ 2Fdefault.aspx & wsucxt = 1 & client-request-id = ....

بعد الضغط على زر موافق في صفحة تسجيل الدخول رأيت رابطين سريعين ...
أولاً: https://sts.company.com/adfs/ls/wia؟client-request-id=...&wa=wsignin1.0&wtrealm=urn٪3afederation٪3aMicrosoftOnline&wctx=LoginOptions٪3D3٪26estsredirect٪3d2٪26estsrequest٪. ... & cbcxt = & username = myemail٪ company.com & mkt = & lc =
... و ...
ثانيًا: https: //login.microsoftonline.com/login.srf؟ client-request-id = ...

وأخيرًا يتوقف عند الصفحة المطلوبة:
https://company.sharepoint.com/

قمت بتشغيل هذا الرمز وجدت أنه يلقي خطأ 403 في مكان ما في التعليمات البرمجية.

response = request.post (url، data = SharepointOnlineAuth، headers = headers)
s = str (response.content)
مطبوعات)
"b'403 ممنوع" "

لقد نسيت استخدام نقطة النهاية

url = " https://login.microsoftonline.com/extSTS.srf "

urlpar

أواجه نفس المشكلة مع urlparse (Python 3.6.5 :: Anaconda، Inc.). تم حل ذلك عن طريق تعديل saml_token_provider.py: from urllib.parse import urlparse [...] url = urlparse(self.url)

ثم فقدت الويب ، الذي قمت بتثبيته به: pip install lpthw.web . ومع ذلك ، يبدو أن هناك مشكلة ، حيث إنني أتلقى الآن المشكلة التالية:
from web import Web File "C:\ProgramData\Anaconda3\lib\site-packages\web\__init__.py", line 14, in <module> import utils, db, net, wsgi, http, webapi, httpserver, debugerror ModuleNotFoundError: No module named 'utils'

قم بتثبيت وحدة utils في الأناكوندا.

قم بتثبيت وحدة utils في الأناكوندا.

شكرا. بعد تثبيت الأدوات ، احتجت أيضًا إلى تثبيت db ... قد يكون من المفيد أن يكون لديك فحص requirements.txt في الحزمة؟

ما يحدث الآن هو أن عبارات الطباعة ليست مناسبة لـ python3:
print "var", var ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("var", var)?

يرجى الدخول من خلال الرابط التالي:
https://docs.python.org/3.0/whatsnew/3.0.html

viogp نشكرك على نشر تقدمك هنا ، سيكون جيدًا إذا تمكنا من

أهلا. لدي مشكلة في استخدام هذه المكتبة.
حدث خطأ أثناء استرداد الرمز المميز: AADSTS90023: طلب STS غير صالح.
حدث خطأ أثناء استرداد ملفات تعريف ارتباط المصادقة
إرجاع 'FedAuth =' + self.FedAuth + '؛ rtFa = '+ self.rtFa
TypeError: يمكن فقط ربط str (وليس "NoneType") إلى str
أي يمكن أن يساعدني؟

نظرًا لأن المكتبة متوافقة رسميًا مع كل من إصدارات Python 2 و Python 3 ، فاقترح إغلاق هذه المشكلة.

أهلا،

أتلقى هذا الخطأ "ModuleNotFoundError: لا توجد وحدة باسم 'office365.sharepoint.client_context'" عندما أستخدم بيئة المشروع في pycharm أثناء التشغيل. لكنها ستعمل بشكل جيد إذا استخدمت بيئة نظام Python. نفس السلوك إما أن أستخدم Python 3.6 أو 3.7.

الرجاء المساعدة!
شكرا.

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