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

时间:2017-02-27 17:01:59

标签: python onedrive

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

/me/drive/root/children

然而,即使发生以下观察,它也会返回0个孩子:

  1. 调用/me/drive/root返回:

    ”, “文件夹”:{ “childCount”:3}, “根”:{}, “尺寸”:28413 “specialFolder”:{ “名称”: “文档”}}

  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

  4. 发生了什么事?

    编辑:

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

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

    第二次编辑:

    我从apps.dev.microsoft.com删除了所有应用权限,但仍然有相同的观察结果。看起来我在那里设置的权限没有效果。

1 个答案:

答案 0 :(得分:0)

上面的代码遵循以下示例:

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中声明正确的范围。因此,即使应用程序具有权限,但未在此处声明范围,您也无法访问工作表。