Office365-rest-python-client: AttributeError: 'ClientContext' 对象没有属性 '_auth_context'

创建于 2020-12-07  ·  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'

所有6条评论

这很快,感谢@vgrem解决了问题,并在本地进行了测试。

问候,

谢谢你抓住它! 结果AuthenticationContext的实例在传入ClientContext时丢失

另一方面,由于AuthenticationContext.acquire_token_for_app现在被视为 _deprecated_,另一个选项(_recommended_)是从:

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

我试过上面的命令。 我仍然遇到同样的问题。
请在下面找到代码片段。 我正在使用用户凭据

pip 安装 --upgrade pip
pip 安装 Office365-REST-Python-Client
pip install --upgrade 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(web)
ctx.execute_query()
print("认证成功")

image

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

spurthikaribasaiah picture spurthikaribasaiah  ·  10评论

liuliqiu picture liuliqiu  ·  7评论

etiennecelery picture etiennecelery  ·  4评论

Cesaaar picture Cesaaar  ·  7评论

oktorok picture oktorok  ·  5评论