如何生成适用于Microsoft Graph API /me端点的令牌以读取邮件
解决Graph API /me/messages端点的权限错误及令牌生成方案
/me/messages 端点要求使用委托身份验证流生成的令牌——这类令牌会关联具体的用户身份;如果你的令牌是通过客户端凭证流(Client Credentials Flow)生成的,仅代表应用本身、不绑定任何用户,就会触发该错误。以下是两种可行的令牌生成及调用方案:
Postman请求示例
- 新建GET请求,地址填写
https://graph.microsoft.com/v1.0/me/messages - 切换到Authorization标签页,授权类型选择「OAuth 2.0」
- 配置核心参数:
- Grant Type:Authorization Code
- Callback URL:填写Azure AD应用注册中设置的重定向URI(比如
https://oauth.pstmn.io/v1/callback) - Auth URL:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/authorize - Access Token URL:
https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token - Client ID:你的Azure AD应用注册的客户端ID
- Scope:
Mail.Read(按需添加其他委托权限,用空格分隔) - 勾选「Use PKCE」(推荐,提升安全性)
- 点击「Get New Access Token」,按提示登录组织邮箱账号完成授权,获取令牌后点击「Use Token」
- 发送请求即可成功调用
/me/messages端点
Python代码示例(使用MSAL官方库)
先安装依赖:
pip install msal requests
代码实现:
import msal import requests # 替换为你的实际配置 TENANT_ID = "你的租户ID" CLIENT_ID = "你的Azure AD应用注册客户端ID" REDIRECT_URI = "你的应用重定向URI" # 示例:"http://localhost:8000/redirect" SCOPES = ["Mail.Read"] # 所需的委托权限范围 # 初始化MSAL客户端 app = msal.PublicClientApplication(CLIENT_ID, authority=f"https://login.microsoftonline.com/{TENANT_ID}") # 生成授权URL,引导用户登录授权 auth_url = app.get_authorization_request_url(SCOPES, redirect_uri=REDIRECT_URI) print(f"请访问以下URL登录授权:{auth_url}") print("登录完成后,复制地址栏中的code参数粘贴到下方:") auth_code = input("输入授权code:") # 用授权code交换访问令牌 result = app.acquire_token_by_authorization_code(auth_code, SCOPES, redirect_uri=REDIRECT_URI) if "access_token" in result: # 调用Graph API获取邮件列表 headers = {"Authorization": f"Bearer {result['access_token']}"} response = requests.get("https://graph.microsoft.com/v1.0/me/messages", headers=headers) response.raise_for_status() print("邮件获取成功:") print(response.json()) else: print(f"令牌获取失败:{result.get('error_description')}")
运行代码后,需手动访问生成的授权URL,登录组织邮箱完成授权,复制地址栏中的code参数粘贴到控制台,即可获取关联用户身份的令牌并调用目标端点。
内容的提问来源于stack exchange,提问作者Onur Baskin
相关产品推荐
相关产品推荐

