通过 REST API 获取驱动器中的所有文件

get all files in drive via REST API

我正在尝试通过端点访问我驱动器中的所有文件

/me/drive/root/children

然而它 returns 0 children 即使发生以下观察结果:

  1. 正在调用 /me/drive/root returns:

    ","folder":{"childCount":3},"root":{},"size":28413,"specialFolder":{"name":"documents"}}

  2. 更有趣的是,从 Graph Explorer 执行 API 调用: https://graph.microsoft.io/en-us/graph-explorer 显示我在使用 me/drive/root/children 时拥有的 3 个文件。

  3. 图形浏览器在使用 /me/drive/root 时完全匹配 API 调用,但不匹配 /me/drive/root/children.

发生了什么事?

编辑:

根据 Brad 的建议,我用 https://jwt.io/ 解码了令牌,参数 scp 读取:

scp": "Mail.Send User.Read",

第二次编辑:

我从 apps.dev.microsoft.com 中删除了所有应用程序权限,但我仍然有相同的观察结果。貌似我设置的权限没有生效

上面的代码遵循在以下位置找到的示例:

https://dev.office.com/code-samples-detail/5989

事实证明,整个混乱都来自这里:

microsoft = oauth.remote_app(
    'microsoft',
    consumer_key=client_id,
        consumer_secret=client_secret,
        request_token_params={'scope': 'User.Read Mail.Send Files.Read Files.ReadWrite'},
        base_url='https://graph.microsoft.com/v1.0/',
        request_token_url=None,
        access_token_method='POST',
        access_token_url='https://login.microsoftonline.com/common/oauth2/v2.0/token',
        authorize_url='https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
)

我没有在 request_token_params 中声明正确的范围。因此,即使应用程序具有权限,如果没有在那里声明的范围,您也无法访问工作表。