gpt4 book ai didi

python - 使用 python 的 MS Graph 身份验证

转载 作者:行者123 更新时间:2023-12-02 17:21:06 24 4
gpt4 key购买 nike

尝试编写一个 Python 代码来访问我的日历并检索我的日程安排。无法通过身份验证阶段。查看并测试了许多示例,但所有示例都需要运行本地服务器,我在本地浏览并需要单击一个按钮,然后输入我的凭据。旨在在我的 Python 代码中执行所有这些。

最佳答案

您可以通过以下两种方式之一实现:

  1. 使用资源所有者密码凭据流 - 这允许您将用户名和密码传递给 Azure AD。问题是,如果身份验证流程中有任何额外的事情(同意、MFA、密码重置),你就会失败。
  2. 使用客户端凭证流 - 这需要 admin consent .另外,你必须非常小心这个,因为这个客户端可以访问所有用户的所有信息。这应该只用于安全客户端,而不是其他用户有权访问的客户端。

这是展示这两种情况的代码片段:

import adal
import requests

tenant = "contoso.com"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"

username = "foo@contoso.com"
password = "mypassword"

authority = "https://login.microsoftonline.com/" + tenant
RESOURCE = "https://graph.microsoft.com"

context = adal.AuthenticationContext(authority)

# Use this for Client Credentials
#token = context.acquire_token_with_client_credentials(
# RESOURCE,
# client_id,
# client_secret
# )

# Use this for Resource Owner Password Credentials (ROPC)
token = context.acquire_token_with_username_password(RESOURCE, username, password, client_id);

graph_api_endpoint = 'https://graph.microsoft.com/v1.0{0}'

# /me only works with ROPC, for Client Credentials you'll need /<UsersObjectId/
request_url = graph_api_endpoint.format('/me')
headers = {
'User-Agent' : 'python_tutorial/1.0',
'Authorization' : 'Bearer {0}'.format(token["accessToken"]),
'Accept' : 'application/json',
'Content-Type' : 'application/json'
}

response = requests.get(url = request_url, headers = headers)
print (response.content)

关于python - 使用 python 的 MS Graph 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42624144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com