我需要知道用户的电子邮件和 ID(以便我可以从电子邮件中识别用户)。
根据 Microsoft documentation,以下代码应允许检索用户信息。
import asyncio
import configparser
from azure.identity.aio import ClientSecretCredential
from msgraph import GraphServiceClient
from msgraph.generated.users.item.user_item_request_builder import UserItemRequestBuilder
def main():
# Load settings
config = configparser.ConfigParser()
config.read(['config.cfg', 'config.dev.cfg'])
azure_settings = config['azure']
credentials = ClientSecretCredential(
azure_settings['tenantId'],
azure_settings['clientId'],
azure_settings['clientSecret'],
)
scopes = ['https://graph.microsoft.com/.default']
client = GraphServiceClient(credentials=credentials, scopes=scopes)
query_params = UserItemRequestBuilder.UserItemRequestBuilderGetQueryParameters(select=['id', 'mail', ])
request_config = UserItemRequestBuilder.UserItemRequestBuilderGetRequestConfiguration(query_parameters=query_params)
users = asyncio.run(client.users.get(request_config))
print(users)
但是,我收到错误
Traceback (most recent call last):
File "C:\Users\PycharmProjects\ProcessEmailReceipts\microsoft_graph.py", line 35, in <module>
main()
File "C:\Users\PycharmProjects\ProcessEmailReceipts\microsoft_graph.py", line 28, in main
request_config = UserItemRequestBuilder.UserItemRequestBuilderGetRequestConfiguration(query_parameters=query_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'UserItemRequestBuilder' has no attribute 'UserItemRequestBuilderGetRequestConfiguration'
查看repo,该类确实不存在。
有没有办法使用 python sdk 获取所有用户 ID 和电子邮件?
谢谢,
首先,注册一个 Entra ID 申请并授予
User.Read.All
Application 类型的权限,如下所示:
要使用 MS Graph Python SDK 获取具有 ID 和 Emails 的所有用户,请使用以下示例代码:
import asyncio
from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient
tenant_id = "tenantID"
client_id = "appID"
client_secret = "secret"
credential = ClientSecretCredential(
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret
)
client = GraphServiceClient(credential)
async def main():
result = await client.users.get()
users = result.value
for user in users:
print("User ID:", user.id)
print("User Email:", user.mail)
print("User Display Name:", user.display_name)
print("-" * 50) # Separating each user with a line
asyncio.run(main())
回复:
参考: