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

从后台服务访问Outlook Calendar Graph API遇权限拒绝问题求助

问题:无用户参与访问多目录及个人账号Outlook日历权限错误

背景

开发一款包含SPA与后端的Web应用,需全天候无用户参与地访问并修改来自多目录及个人账号的用户Outlook日历。

已完成的配置

  • 创建支持「任意组织目录账号(多租户Microsoft Entra ID)及个人Microsoft账号」的AAD应用注册;
  • 设置RedirectURI为SPA基础URL并创建密钥;
  • 基于MSAL(msal-browser)实现SPA认证,授权请求链接:
    https://login.microsoftonline.com/common/oauth2/v2.0/authorize?scope=https://graph.microsoft.com/Calendars.ReadWrite+openid+profile+offline_access&response_type=code&client_id=my_client_id..
    
  • 用户成功认证并授权后,账号状态正常;
  • 从id token的tid声明中获取tenantId;
  • 通过访问https://graph.microsoft.com/v1.0/me/events成功验证access_token有效性及权限配置;
  • 使用client_credentials flow成功获取access_token,请求命令:
    curl --location 'https://login.microsoftonline.com/tenantId_from_step_5/oauth2/v2.0/token' 
    --header 'Content-Type: application/x-www-form-urlencoded' 
    --data-urlencode 'client_id=clientId_from_step1' 
    --data-urlencode 'scope=https://graph.microsoft.com/.default' 
    --data-urlencode 'client_secret=secret_from_step2' 
    --data-urlencode 'grant_type=client_credentials'
    

遇到的错误

使用上述client_credentials flow获取的access_token访问https://graph.microsoft.com/v1.0/users/my_test_user@outlook.com/events时,返回错误:

{
"error": {
    "code": "ErrorAccessDenied",
    "message": "Access is denied. Check credentials and try again."
}
}

更新信息

  • 通过credential_flow获取的JWT Token(请求地址:https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/oauth2/v2.0/token)缺少roles(权限)声明;
  • 个人账号均共用tenantId:9188040d-6c67-4c5b-b112-36a304b66dad;
  • Azure Portal中应用(outlook-sync-dev)的权限配置已按要求添加。

请求帮助

目前陷入困境,恳请提供解决该权限问题的建议与方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:28:17