迁移Outlook REST API用户及令牌至MS Graph,无需重新授权可行吗?
针对Outlook REST API转MS Graph API的令牌迁移方案
核心问题是Outlook REST API的刷新令牌与Microsoft Graph API的令牌体系不兼容,导致CompactToken parsing failed with error code: 8004920A错误,根源是两者的受众(aud)和发行者(iss)字段不一致。
无需用户重新走OAuth流程的迁移方法主要有以下两种:
1. 用旧刷新令牌兑换Graph兼容令牌
直接向Azure AD的令牌端点发起请求,将原Outlook REST的refresh token兑换为适用于Graph API的新令牌,步骤如下:
- 发送POST请求到
https://login.microsoftonline.com/common/oauth2/v2.0/token - 请求参数需包含:
grant_type=refresh_tokenclient_id=你的应用注册IDclient_secret=你的应用密钥(仅机密客户端需要)refresh_token=原Outlook REST API的刷新令牌scope=offline_access https://graph.microsoft.com/[你的所需权限](比如Mail.ReadWrite,根据业务需求调整)
只要原refresh token未过期,且你的应用已配置好对应的Graph API权限,Azure AD会返回新的access token和refresh token,后续即可用新令牌调用Graph API。
2. 确认应用权限配置
确保你的应用在Azure AD门户中已添加Microsoft Graph的相关权限(委托权限或应用权限,根据业务场景选择),并且完成了必要的管理员同意(如果是应用权限或需要全局范围的委托权限)。权限配置缺失会导致令牌兑换失败。
关键注意点
- 若原refresh token已过期,此方法无效,必须引导用户重新授权。
- 部分租户可能因安全策略限制旧令牌兑换,这种情况也需要用户重新走OAuth流程。
- 建议先小批量测试兑换逻辑,验证成功后再对全量用户执行迁移。
内容的提问来源于stack exchange,提问作者Dumi
相关产品推荐
相关产品推荐

