Microsoft graph api 无法访问onedrive内容
我正在开发一个应用程序,需要使用Microsoft Graph访问OneDrive for Business上的文件。我在Azure上创建了一个web应用程序,我成功地获得了身份验证令牌,并且我能够使用Microsoft graph api 无法访问onedrive内容,microsoft-graph-api,onedrive,Microsoft Graph Api,Onedrive,我正在开发一个应用程序,需要使用Microsoft Graph访问OneDrive for Business上的文件。我在Azure上创建了一个web应用程序,我成功地获得了身份验证令牌,并且我能够使用https://graph.microsoft.com/v1.0/me。但是,如果我尝试使用https://graph.microsoft.com/v1.0/me/drive/root/children我收到一个拒绝访问错误 我已经在Graph Explorer上进行了检查,我能够毫无问题地获得查
https://graph.microsoft.com/v1.0/me
。但是,如果我尝试使用https://graph.microsoft.com/v1.0/me/drive/root/children
我收到一个拒绝访问错误
我已经在Graph Explorer上进行了检查,我能够毫无问题地获得查询结果。对于我的web应用,我使用以下图形权限:
- 人。读-授权
- Sites.ReadWrite.All-委派
- Sites.ReadWrite.All-应用程序
- Tasks.ReadWrite-委派
- User.Export.All-委派
- User.Export.All-应用程序
- User.Invite.All-委派
- User.Invite.All-应用程序
- User.Read-委派
- User.Read.All-委派
- User.Read.All-应用程序
- User.ReadBasic.All-委派
- User.ReadWrite-委派
- User.ReadWrite.All-委派
- User.ReadWrite.All-应用程序
- 脱机访问-委派
- openid-委托
SendGraphRequest(“https://graph.microsoft.com/v1.0/me/drive)等等;
我从中得到的结果是:
{
"error": {
"code": "accessDenied",
"message": "There has been an error authenticating the request.",
"innerError": {
"request-id": "request-id",
"date": "2019-09-24T11:03:29"
}
}
}
您在这里设置的作用域太多了。例如,您不需要读和写作用域。您还请求了一些应用程序作用域,但使用了OAuth密码授权,该授权只适用于委托的作用域(不能将两者混合使用) 我建议将您的作用域与以下委派权限配对:
openid
User.ReadWrite
User.ReadBasic.All
文件.ReadWrite.All
People.阅读
Sites.ReadWrite.All
Tasks.ReadWrite
离线访问
请注意,
Sites.ReadWrite.All
与Files.ReadWrite.All
稍有不同。一个涉及SharePoint,另一个涉及OneDrive 在尝试修复此问题将近两周后,我意识到问题不在于代码,而在于azure配置。我的假设是,如果在active directory管理员的帐户上安装web应用程序,则该active directory上的所有用户都可以使用相同的web应用程序访问各自的单驱动器帐户。不幸的是,情况并非如此,如果用户(不是管理员)试图使用web应用程序访问一个驱动器,他或她唯一能够访问的就是他们的帐户信息,而无法访问文件。为了使用graph api访问文件,web应用程序需要安装在各自的活动目录中。我按照您的建议执行了操作,只保留了您提供的列表中的范围。我总是得到同样的结果。对于https://graph.microsoft.com/v1.0/me
我设法获取用户数据,但只要我尝试类似https://graph.microsoft.com/v1.0/me/drive/root/children
我收到拒绝访问错误。您能在浏览器中打开OneDrive的UI吗?如果您可以将实际的access\u令牌添加到您的问题中,这可能会有所帮助。是的,我可以在浏览器中打开OneDrive的UI。我得到的令牌是:(使用此网站,因为令牌太大)该令牌看起来正确。您是否尝试过使用SDK而不是手工编写调用?您好@sion005,对不起,差不多一年后。我不是管理员,我一直被拒绝访问。你是说我必须安装Azure广告应用程序?