使用 client_credentials 访问个人 OneDrive API
Access Personal OneDrive API with client_credentials
对于一个项目,我需要显示存储在个人 OneDrive 上的一些文件。
我不能使用经典的 OAuth2 身份验证,我需要作为应用程序而不是用户进行身份验证,如本页所述:https://docs.microsoft.com/en-us/graph/auth-v2-service
但 adminConsent 似乎仅适用于企业订阅。
有没有办法用个人 OneDrive 做到这一点?
我尝试在我的个人 OneDrive 中声明一个共享点应用程序,但它似乎是企业功能。
您是否尝试生成 link 来嵌入您的文件夹?当您 select OneDrive 文件夹时,您可以使用导航菜单上的图标来执行此操作。
我看不到任何通过声明应用程序来共享文件的解决方案,我猜这在个人 OneDrive 中受到限制。我确实在企业 One Drive 中尝试过它,似乎我可以使用 maginc link
声明一个应用程序
/_layouts/15/appregnew.aspx
希望您能找到解决方案
我终于找到了 代码流身份验证 和 offline_access 范围 的解决方案。
使用这种方法,管理员必须连接一次才能获得刷新令牌,之后可以随时使用该令牌来获得 access_token。
我找到了一个不同的解决方案,它似乎与您的解决方案不同,但可能会有所帮助。如果您遵循有关创建守护程序应用程序的文档,则可以创建一个访问令牌,前提是您具有以下内容:
- 您的客户 ID
- 您的客户机密
- 您的租户姓名
请参阅 this link for info on daemon applications. There are examples also on this 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。
对于一个项目,我需要显示存储在个人 OneDrive 上的一些文件。
我不能使用经典的 OAuth2 身份验证,我需要作为应用程序而不是用户进行身份验证,如本页所述:https://docs.microsoft.com/en-us/graph/auth-v2-service
但 adminConsent 似乎仅适用于企业订阅。 有没有办法用个人 OneDrive 做到这一点?
我尝试在我的个人 OneDrive 中声明一个共享点应用程序,但它似乎是企业功能。
您是否尝试生成 link 来嵌入您的文件夹?当您 select OneDrive 文件夹时,您可以使用导航菜单上的图标来执行此操作。
我看不到任何通过声明应用程序来共享文件的解决方案,我猜这在个人 OneDrive 中受到限制。我确实在企业 One Drive 中尝试过它,似乎我可以使用 maginc link
声明一个应用程序/_layouts/15/appregnew.aspx
希望您能找到解决方案
我终于找到了 代码流身份验证 和 offline_access 范围 的解决方案。 使用这种方法,管理员必须连接一次才能获得刷新令牌,之后可以随时使用该令牌来获得 access_token。
我找到了一个不同的解决方案,它似乎与您的解决方案不同,但可能会有所帮助。如果您遵循有关创建守护程序应用程序的文档,则可以创建一个访问令牌,前提是您具有以下内容:
- 您的客户 ID
- 您的客户机密
- 您的租户姓名
请参阅 this link for info on daemon applications. There are examples also on this 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。