You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

每次创建Teams在线会议都需要更新Microsoft Graph访问令牌吗?

方案建议

核心结论

首先客户端凭据流获取的Access Token默认有效期为3599秒(1小时),微软官方不支持将该类令牌的有效期设置为90天,可配置的最长有效期仅为24小时,且长有效期令牌存在极高的泄露风险,因此不建议通过修改有效期的方式简化流程,最优方案为令牌缓存+自动刷新。

现有实现问题修正

你当前的创建会议接口存在逻辑错误:客户端凭据流无用户登录上下文,/me端点无法识别调用身份,会返回401/404错误,需要替换为指定用户的端点:
POST https://graph.microsoft.com/v1.0/users/{用户ID/用户UPN}/onlineMeetings
同时需要提前在Azure AD应用注册中完成以下配置:

  • 添加Microsoft Graph的应用权限OnlineMeetings.ReadWrite.All
  • 由租户管理员完成该权限的全局同意

最优实现流程

1. 新增令牌缓存逻辑

无需每次创建会议都重新请求令牌,只需在服务端增加缓存逻辑即可:

  • 缓存字段存储access_token和对应的expires_at(过期时间戳,计算方式为当前时间+返回的expires_in值,建议预留1-2分钟的缓冲时间避免令牌过期)
  • 每次需要调用Graph API时先查询缓存:
    • 若缓存中存在未过期的令牌,直接使用
    • 若令牌已过期/即将过期,重新发起令牌请求更新缓存后再使用
  • 缓存可根据你的服务架构选择内存缓存、Redis等方案,实现成本极低

2. 令牌获取逻辑保持不变

你现有的客户端凭据流令牌请求逻辑无需调整,代码如下:

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=MyAppClientID
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=MyAppClientSecretPassword
&grant_type=client_credentials

3. 调整后的创建会议请求

POST https://graph.microsoft.com/v1.0/users/{用户ID/用户UPN}/onlineMeetings
Content-Type: application/json

{
  "startDateTime":"2019-07-12T14:30:34.2444915-07:00",
  "endDateTime":"2019-07-12T15:00:34.2464912-07:00",
  "subject":"User Token Meeting"
}

其他说明

如果确实需要调整令牌有效期,可在Azure AD中配置令牌生命周期策略,最高可将客户端凭据流令牌有效期设为24小时,但该方案会提升权限泄露风险,仅建议在测试环境临时使用,生产环境优先使用缓存方案。

内容的提问来源于stack exchange,提问作者techgirl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:45:07