使用client_credentials访问Personal OneDrive API

时间:2019-02-15 16:17:26

标签: azure microsoft-graph onedrive

对于一个项目,我需要显示一些存储在Personal OneDrive上的文件。

我无法使用经典的OAuth2身份验证,我需要以应用程序身份而不是用户身份进行身份验证,如本页中所述:https://docs.microsoft.com/en-us/graph/auth-v2-service

但是adminConsent似乎仅用于企业订阅。 使用个人OneDrive有什么方法吗?

3 个答案:

答案 0 :(得分:0)

我徒劳地在个人OneDrive中声明一个共享点应用程序,但这似乎是企业功能。

您是否尝试生成一个嵌入文件夹的链接?选择OneDrive文件夹时,可以使用导航菜单上的图标来完成此操作。

我看不到任何通过声明应用程序共享文件的解决方案,我认为这在Personal OneDrive中受到限制。我确实在企业One Drive中进行了尝试,看来我可以使用maginc链接声明一个应用程序

/_layouts/15/appregnew.aspx

希望您会找到解决方案

答案 1 :(得分:0)

我终于找到了具有代码流认证 offline_access作用域的解决方案。 使用这种方法,管理员必须连接一次才能获得刷新令牌,该刷新令牌可在以后随时获取access_token来使用。

https://docs.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/msa-oauth?view=odsp-graph-online#code-flow

答案 2 :(得分:0)

我找到了一个不同的解决方案,该解决方案似乎与您的解决方案并不相同,但可能会有所帮助。如果您遵循有关创建守护程序应用程序的文档,则可以在具有以下条件的情况下创建访问令牌:

  • 您的客户ID
  • 您的客户秘密
  • 您的租户名称

有关守护程序应用程序的信息,请参见this linkthis page上也有一些示例,说明了如何实际发出请求。在该页面上,这是HTTP请求正文。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity.
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials

您将获得如下响应。然后,您可以使用access_token发出API请求。

{
    "token_type": "Bearer",
    "expires_in": 3599,
    "ext_expires_in": 3599,
    "access_token": "ACCESS_TOKEN"
}

您可以找到Python代码example here