Office365-rest-python-client: AttributeError: الكائن "ClientContext" ليس له سمة "_auth_context"

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

يتم استخدام Office365-REST-Python-Client==2.3.0.1

عندما أقوم بتشغيل الكود التالي:

def upload_to_sharepoint():
    url = 'https://tenant.sharepoint.com/sites/sitename'

    credentials = {
        'client_id': os.environ.get('client_id'),
        'client_secret': os.environ.get('client_secret'),
    }
    context_auth = AuthenticationContext(url=url)
    context_auth.acquire_token_for_app(client_id=credentials['client_id'],
                                       client_secret=credentials['client_secret'])
    ctx = ClientContext(url, context_auth)
    web = ctx.web
    ctx.load(web)

    file_name = f"vat check {datetime.now().strftime('%Y-%m-%d')}"
    path = os.path.join("/tmp", file_name)

    with open(path, 'rb') as content_file:
        file_content = content_file.read()

    list_title = "VAT Check"
    target_folder = ctx.web.lists.get_by_title(list_title).rootFolder
    # name = os.path.basename(path)
    target_file = target_folder.upload_file(file_name, file_content)
    ctx.execute_query()
    print(f"File url: {target_file.serverRelativeUrl}")

تلقيت الخطأ التالي ، يبدو أن هذا خطأ داخليًا لا يتعلق بالمصادقة ، أو هل فقدت شيئًا ما؟

AttributeError: 'ClientContext' object has no attribute '_auth_context'
bug

ال 6 كومينتر

كان ذلك سريعًا ، شكرًا vgrem على حل المشكلة ، واختبرها محليًا.

تحيات،

شكرا لالتقاطها! تبين أن مثيل AuthenticationContext قد فُقد عند المرور إلى ClientContext .

من ناحية أخرى ، نظرًا لأن AuthenticationContext.acquire_token_for_app يعتبر _deprecated_ في الوقت الحاضر ، هناك خيار آخر (_موصى به_) وهو التبديل من:

context_auth = AuthenticationContext(url=url)
context_auth.acquire_token_for_app(client_id=credentials['client_id'],
                                       client_secret=credentials['client_secret'])
ctx = ClientContext(url, context_auth)

داخل

credentials = ClientCredential(credentials['client_id'], credentials['client_secret'])
ctx = ClientContext(settings['url']).with_credentials(credentials)

ما زلت أتلقى هذه المشكلة.
ماذا قد يكون السبب

ربما تحتاج إلى تحديث الحزمة الخاصة بك: pip install --upgrade Office365-REST-Python-Client spurthikaribasaiah

مرحبًا erfannariman و vgrem ،

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

تثبيت نقطة - ترقية نقطة
نقطة تثبيت Office365-REST-Python-Client
تثبيت نقطة - ترقية Office365-REST-Python-Client

من office365.runtime.auth.authentication_context استيراد AuthenticationContext
من office365.sharepoint.client_context استيراد ClientContext

ctx_auth = AuthenticationContext (Sharepoint_SiteUrl)
ctx_auth.acquire_token_for_user (مستخدم ، تمرير)
ctx = ClientContext (Sharepoint_SiteUrl ، ctx_auth)
الويب = ctx.web
ctx.load (الويب)
ctx.execute_query ()
طباعة ("المصادقة ناجحة")

image

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