【发布时间】:2017-11-02 14:48:46
【问题描述】:
我目前正在开发一个使用 Microsoft Graph 在 Office 365 中访问 OneDrive 的解决方案。我正在使用adal4j 库来处理身份验证,并在portal.azure.com 中配置了应用程序。
我的问题与为指定驱动器获取孩子的调用有关。我正在使用类似于下面显示的查询,因为我想在指定用户驱动器的根级别获取文件夹和文件:
https://graph.microsoft.com/v1.0/users/*user id*/drives/*drive id*/root/children
当我登录到 Graph Explorer 并执行查询时,我得到一个 json 结果,显示驱动器和指定用户的根文件夹内容。一切正常。
当我从我的 java 应用程序中调用它时,JSON 节点 value 为空 ([])。
最初我的想法是,因为 Graph Explorer 在门户中使用不同的应用程序 ID,这可能与访问权限有关。但是,我成功读取了 O365 租户中的用户配置文件、每个用户的驱动器 ID,以及执行以下操作:
https://graph.microsoft.com/v1.0/users/*user id*/drives/*drive id*/root/search(q='')
它为我提供了相应用户驱动器中所有文件夹、子文件夹等的完整列表。
因此,让我认为这是我尝试使用的 Graph 查询的错误,而不是授权问题,但是,这并不能解释为什么它在 Graph Explorer 中有效。
所有调用都使用同一个java方法,url作为参数传入。
【问题讨论】:
-
我的第一反应是它必须是权限,但在这种情况下,搜索工作会很奇怪。您能否使用jwt.ms 打开您的访问令牌并更新您的问题以包含
scp值?另外,调用者是相关驱动器的所有者吗? -
是的。这也是我的想法,但无法理解几乎所有其他呼叫如何正常工作。令牌 SCP 值是:- Directory.AccessAsUser.All User.Read User.ReadBasic.All
-
好的,找到添加更多设置的地方。现在已将 scp 属性设置为 AllSites.Manage AllSites.Read AllSites.Write Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All Files.Read Files.Read.All Files.Read.Selected Files.ReadWrite Files。 ReadWrite.All Files.ReadWrite.AppFolder Files.ReadWrite.Selected MyFiles.Read MyFiles.Write offline_access openid Sites.Read.All User.Read User.ReadBasic.All。但是,当我在图中使用上述查询列出内容时,我得到了所有适当的子文件夹,但是,当我远程执行时,我只得到文档文件夹?
标签: microsoft-graph-api onedrive