我有一个专用于服务器端API访问的Microsoft Graph&MSA / AAD v2守护程序。在Azure门户中,我已授予我对User.Read.All和Files.Read.All的Microsoft帐户(MSA)的管理员同意。
我可以成功获得令牌,并且我已经尝试使用相同的返回结果来尝试/me/drive/root
和/users/{user_guid}/drive/root
:
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使用者(即http://onedrive.live.com)。
图形是否无法为消费者访问OneDrive?还是只有委派权限才能使用?在Graph和OneDrive开发文档中都没有看到任何参考。
与Microsoft身份团队交谈之后,当前不支持使用client_credentials
授予类型访问Microsoft帐户用户的个人OneDrive(或其他Microsoft Graph)内容的方案。
您可以获得MSA用户的管理员同意,但是这些方案仅限于在AAD租户中以访客用户身份运行的MSA用户,或者要求他们具有M365许可证和关联的SharePoint Online实例。
如果您希望通过服务访问MSA用户的内容,则建议在该服务中保留刷新令牌并获得对offline_access的同意。