我想创建一个简单的Python实用程序,以与OneDrive上的文件进行交互。现在,我正在使用公司帐户(因此,我无权访问管理员设置或对OneDrive / Sharepoint / Azure配置的任何详细了解)。
在快速谷歌搜索会话之后,Microsoft Graph似乎是必经之路。我从复制the sample app开始,一旦确认基本功能正常(它显示了我的个人资料中的名称,等等),我尝试向me/drive/root/children
添加一个简单的调用以列出根目录中的文件目录。而且我无法使其正常工作。
无论我做什么,服务器都会返回以下内容:
{'@odata.context': "https://graph.microsoft.com/v1.0/$metadata#users('my_oid')/drive/root/children", 'value': []}
这个问题发生在few people之前,所以我试图追随他们的足迹。到目前为止,我已经检查过:
Files.Read
,Files.Read.All
,Files.ReadWrite
,Files.ReadWrite.All
,openid
,profile
,{{1} } 乃至
User.Read
Sites.ReadWrite.All
返回正确的数据以及文件系统信息,等等。me/drive/root/?expand=children
返回正确的查询URL:me/drive/root/children?$whatif
https://{tenant}-my.sharepoint.com/personal/{username}/_api/v2.0/drive/root/children
库进行访问并将adal
添加到所有OAuth查询中(不变)。scope=files.readwrite.all
查询(不变,/user/{oid}/drive/root/children
建议将此映射到相同的共享点URL)这些都不起作用。这里可能缺少什么?
编辑:缺少用户同意-我已经添加了权限,但是系统从未尝试登录后询问我有关更改的信息。评论中提供的解决方案有效-您只需要打开如下制作的URL:
?$whatif
同意新的权限,瞧! MS表现出色。
答案 0 :(得分:1)
更新权限后,用户和/或管理员将不得不再次同意。您可以通过url请求强制用户同意,或者只需在Azure门户中单击“授予管理员同意按钮”。
https://login.microsoftonline.com/{tenant}/oauth2/authorize? client_id={your_client_id} &response_type=code &response_mode=query &resource=https://graph.microsoft.com &state=12345 &prompt=consent