"Tenant does not have a SPO license" 对于 OneDrive 消费者的应用程序权限

"Tenant does not have a SPO license" for Application Permissions on a OneDrive Consumer

我有一个 Microsoft Graph 和 MSA/AAD v2 守护程序,它专门用于服务器端 API 访问。在 Azure 门户中,我已为 User.Read.All 和 Files.Read.All 的 Microsoft 帐户 (MSA) 授予管理员许可。

我可以成功获得令牌,并且我已经尝试了 /me/drive/root/users/{user_guid}/drive/root 并且 return 结果相同:

GraphError {
  statusCode: 400,
  code: 'BadRequest',
  message: 'Tenant does not have a SPO license.',
  requestId: 'guid',
  date: 2020-06-08T09:53:12.000Z,
  body: '{"code":"BadRequest","message":"Tenant does not have a SPO license.","innerError":{"request-id":"guid","date":"2020-06-08T02:53:12"}}'
}

注意:我知道 SPO 是指 SharePoint Online 和 OneDrive for Business,但这是针对 Microsoft 帐户用户的,我打算访问他们的 OneDrive Consumer(即 http://onedrive.live.com)。

Graph 是否无法访问 OneDrive for Consumers?还是只有委托权限才有可能?我在 Graph 和 OneDrive 开发文档中都没有看到任何参考。

在与 Microsoft Identity 团队讨论后,目前不支持使用 client_credentials 授权类型访问 Microsoft 帐户用户的个人 OneDrive(或其他 Microsoft Graph)内容的方案。

您可以获得 MSA 用户的管理员同意,但是这些情况仅限于在您的 AAD 租户中作为来宾用户运行的 MSA 用户,或者要求他们以其他方式拥有 M365 许可证和关联的 SharePoint Online 实例。

如果您希望从服务访问 MSA 用户的内容,在服务中保留刷新令牌并获得 offline_access 同意目前似乎是推荐的方法。