前言,也有类似的问题(如),但这些问题有所不同,因为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 相当新,我很难找到这些对象的可用方法和参数。
我需要添加书签的一些链接:
免责声明,我是发帖者。
解决方案似乎是您可以在凭证对象中指定租户:
credential = ClientSecretCredential(tenant_id, app_client_id, client_secret_val, authority='mytenant.sharepoint.com')
这样做应该可以帮助您解决所提供的问题。