我有一个客户需要将文件自动上传到其组织的 OneDrive 目录。此上传需要完全自动化,并且需要在没有任何人工干预的情况下运行。我已经阅读了大量的 MicroSoft 文档以及其他类似的问题,但我发现的所有解决方案都有一个步骤,要求将用户定向到登录页面。就我而言,没有用户,也没有涉及浏览器。理想情况下,PHP SDK 会有所帮助,但如果我可以通过纯 HTTP 请求来做到这一点,那也可以。
我尝试了几种 PHP SDK,所有这些都需要一定程度的人机交互。
要实现全自动文件上传到 OneDrive 目录而无需任何人工干预,您可以使用具有应用程序级权限的 Microsoft Graph API。这样,您可以代表应用程序本身而不是特定用户执行操作。
以下是您需要遵循的步骤:
设置 Azure AD 应用程序注册
生成客户端密钥
授予应用程序权限
使用客户端凭据授予获取访问令牌:
使用 cURL 的示例:
curl -X POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
-d 'grant_type=client_credentials'
-d 'client_id={client-id}' \8
-d 'client_secret={客户端秘密}'
-d 'scope=https://graph.microsoft.com/.default'
将文件上传到 OneDrive:
使用 cURL 的示例:
curl -X PUT https://graph.microsoft.com/v1.0/me/drive/root:/path/to/your/file.txt:/content
-H '授权:持有者 {访问令牌}'
--data-binary“@local-file.txt”
此命令将
local-file.txt
上传到 OneDrive 中的指定路径。
这种方法不需要任何用户交互,可以使用任何能够发出 HTTP 请求的编程语言来实现。如果您更喜欢 PHP,则可以使用
cURL
或 Guzzle
等库来发出 HTTP 请求。