使用Graph API创建Microsoft ToDo任务订阅时遇禁止访问错误
使用Graph API创建订阅时的权限报错问题
令牌权限
Calendars.ReadWrite Contacts.ReadWrite Tasks.ReadWrite User.Read profile openid email
错误详情
{ "error": { "code": "ExtensionError", "message": "Operation: Create; Exception: [Status Code: Forbidden; Reason: Access is denied to the requested resource. The user might not have enough permission.]", "innerError": { "date": "2022-11-30T08:23:03", "request-id": "0541655d-83f3-456e-af47-165caf259c76", "client-request-id": "0541655d-83f3-456e-af47-165caf259c76" } } }
请求详情
请求URL
POST https://graph.microsoft.com/v1.0/subscriptions
请求体
{ "notificationUrl":"<development-url>/notifications/office365/graph/v1", "expirationDateTime":"2022-12-03T06:48:06Z", "resource":"/me/todo/lists/{taskListId}/tasks", "changeType":"created,updated,deleted", "clientState":"<client-state>" }
基本信息
- 使用接口:Microsoft Graph API v1.0 订阅创建接口
- 受影响用户数:190人
排查与解决方向
校验任务列表ID的有效性
确保请求体中{taskListId}是当前用户实际拥有的任务列表ID,可先调用GET /me/todo/lists接口确认列表存在且用户能正常访问。确认权限类型与资源路径匹配
- 针对
/me路径的订阅只能使用委托权限,需确保用户已完成授权流程,令牌中的Tasks.ReadWrite是委托权限而非应用权限; - 若使用应用权限,需将资源路径替换为
/users/{userId}/todo/lists/{taskListId}/tasks,并确保应用拥有对应的应用权限且已获取管理员同意。
- 针对
验证通知URL的可访问性与验证逻辑
Graph API会向notificationUrl发送验证请求,需确保该URL可被公网访问,且服务能正确返回微软发送的validationToken。验证失败可能导致权限类错误,需检查URL的路由处理逻辑。检查Azure AD应用注册配置
确认应用注册中已添加Tasks.ReadWrite委托权限,且针对多用户场景已完成管理员同意。同时核对应用的重定向URI、权限范围等配置是否正确。
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

