使用Microsoft Graph API时令牌过期,如何无用户交互刷新令牌?
无需用户交互刷新Microsoft Graph API令牌的解决方案
针对内部应用使用Microsoft Graph API时的令牌过期问题,根据你的应用场景,有两种无交互的令牌刷新方案:
1. 客户端凭证流(无用户上下文)
适合后台服务类内部应用,无需依赖用户身份,直接以应用自身身份获取令牌:
- 请求令牌的端点:
https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token - 请求参数(POST表单格式):
grant_type:client_credentialsclient_id: 你的Azure AD应用客户端IDclient_secret: 应用客户端密钥(推荐用证书替代密钥提升安全性)scope:https://graph.microsoft.com/.default
- 令牌过期后,直接重复上述请求即可获取新令牌,无需刷新令牌。
- 权限说明:需在Azure AD中为应用授予应用权限(如
Contacts.Read),而非委派权限,才能调用/users/{userid}/contacts接口。
2. 刷新令牌流(带用户上下文)
如果你的应用需要基于特定用户身份操作,且已通过授权码流获取过访问令牌和刷新令牌:
- 使用同一令牌端点,通过刷新令牌获取新访问令牌,无需用户交互:
- 请求参数(POST表单格式):
grant_type:refresh_tokenclient_id: 你的Azure AD应用客户端IDclient_secret: 应用客户端密钥(机密客户端需提供)refresh_token: 之前获取的有效刷新令牌scope: 与初始授权请求一致的权限范围(如https://graph.microsoft.com/User.Read Contacts.Read)
- 请求参数(POST表单格式):
- 注意事项:
- 刷新令牌默认有效期90天,定期使用会自动返回新的刷新令牌(滚动更新),若长期未使用会失效。
- 刷新令牌需安全存储在服务端,禁止暴露给前端或不安全环境。
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

