microsoft-graph-api - 为 OneDrive Business 创建订阅返回 403 禁止

标签 microsoft-graph-api onedrive

我正在使用 Microsoft Graph API 构建 OneDrive 并与之集成。一切运行良好,我已经能够注册我的应用程序、获取 token 、导航 OneDrive 项目和下载文件。

我开始创建订阅以在用户执行某些操作时从 OneDrive 接收通知。当用户使用他们的“个人帐户”登录时,这没有任何问题,但是当他们使用“工作或学校”帐户时,我收到以下错误消息:

{
  "error": {
    "code": "ExtensionError",
    "message": "Operation: Create; Exception: [Status Code: Forbidden; Reason: The caller does not have permission to perform the action.]",
    "innerError": {
      "request-id": "ffaf7fae-e0b0-4cd8-b911-bac4c2fb290a",
      "date": "2019-09-18T00:18:40"
    }
  }
}

这是我创建订阅的调用:

curl -X POST \
  https://graph.microsoft.com/v1.0/subscriptions \
  -H 'Authorization: Bearer [access_token]' \
  -H 'Content-Type: application/json' \
  -H 'Host: graph.microsoft.com' \
  -d '        {
            "resource": "me/drive/root",
            "changeType": "updated",
            "clientState": "[email_Address]",
            "notificationUrl": "https://webhook_url",
            "expirationDateTime": "2019-09-19T04:43:47.6099364+00:00"
        }'

用户拥有Files.ReadWrite.All权限,基于documentation应该足够了。

最佳答案

我遇到了同样的问题。唯一的区别是我正在尝试设置 driveItem在企业 OneDrive 路径上订阅 /users/<id>/drive/root但在回复中遇到与您相同的错误。

因此,使用相同的访问 token ,我做了一个 GET /v1.0/users/<id>/drive/root并获取了 driveId来自响应的 parent 。然后我尝试在 /drives/<driveId>/root 创建订阅它奏效了。所有请求都使用相同的访问 token ,而以前的方式曾经工作了几个月。

所以你可以尝试为你的 /me/drive/root 做一个 GET并查看是否可以使用 driveId 进行设置.

作为奖励,订阅现在可以像我预期的那样发送网络 Hook 。

关于microsoft-graph-api - 为 OneDrive Business 创建订阅返回 403 禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983564/

相关文章:

javascript - 从 Azure Functions 内部调用 Microsoft Graph API

java - 使用 ADAL4J 进行 OneDrive 身份验证

onedrive - OneDrive 分块上传(断点续传)?

java - Android 中的文件/数据库在线同步

security - 尽管缺少 'Bearer',请求仍然成功

microsoft-graph-api - 同步新日历事件始终具有 @removed 字段

sharepoint - Microsoft graph 和 Azure Ad 用户身份验证

microsoft-graph-api - 使用 Microsoft Graph 客户端库更新联系人

python - 身份验证 OneDrive API Python

javascript - 如何使用 OneDrive REST API 将文件上传到 OneDrive?