适用于 Python 的 Microsoft Graph SDK:如何获取 SharePoint 列表?

问题描述 投票:0回答:1

前言,也有类似的问题(),但这些问题有所不同,因为Python的SDK似乎没有提供为MS365租户指定域名的方式。

我已经创建了一个具有足够权限的客户端密钥来访问指定资源。以下是我的尝试和结果:

from azure.identity.aio import ClientSecretCredential
from msgraph import GraphServiceClient

# Authentication details
tenant_id         = 'abcdefgh-1234-5678-9012-abcdefghijkl'
app_client_id     = 'abcdefgh-1234-5678-9012-abcdefghijkl'
client_secret_val = 'lmnop~abcdefghijklmnopqrstuvwzxy'

# SharePoint site ID and list name
site_id = 'mysite'
list_name = 'mylist'

# Build client
credential = ClientSecretCredential(tenant_id, app_client_id, client_secret_val)
scopes = ['https://graph.microsoft.com/.default']
client = GraphServiceClient(credentials=credential, scopes=scopes)

# Collect data
req_list = client.sites.by_site_id(site_id).lists.by_list_id(list_name)
res = await req_list.get()
### outputs

ODataError: 
        APIError
        Code: 400
        message: None
        error: MainError(
            additional_data={}, 
            code='invalidRequest', 
            details=None, 
            inner_error=InnerError(
                additional_data={}, 
                client_request_id='23691144-abe3-467d-b160-21c7ae84473b', 
                date=DateTime(2024, 2, 5, 17, 57, 8, tzinfo=Timezone('UTC')), 
                odata_type=None, 
                request_id='f69847e7-4f06-41b9-b2b2-5ce52e597364'
            ), 
            message='Invalid hostname for this tenancy', 
            target=None
        )

它似乎声称租赁使用了无效的主机名,尽管我没有使用主机名。 Python 的 SDK 相当新,我很难找到这些对象的可用方法和参数。

我需要添加书签的一些链接:

python azure sharepoint sdk microsoft-graph-api
1个回答
0
投票

免责声明,我是发帖者。

解决方案似乎是您可以在凭证对象中指定租户:

credential = ClientSecretCredential(tenant_id, app_client_id, client_secret_val, authority='mytenant.sharepoint.com')

这样做应该可以帮助您解决所提供的问题。

© www.soinside.com 2019 - 2024. All rights reserved.