如何在没有任何用户干预的情况下从 PHP 将文件上传到 OneDrive?

问题描述 投票:0回答:1

我有一个客户需要将文件自动上传到其组织的 OneDrive 目录。此上传需要完全自动化,并且需要在没有任何人工干预的情况下运行。我已经阅读了大量的 MicroSoft 文档以及其他类似的问题,但我发现的所有解决方案都有一个步骤,要求将用户定向到登录页面。就我而言,没有用户,也没有涉及浏览器。理想情况下,PHP SDK 会有所帮助,但如果我可以通过纯 HTTP 请求来做到这一点,那也可以。

我尝试了几种 PHP SDK,所有这些都需要一定程度的人机交互。

php onedrive
1个回答
0
投票

要实现全自动文件上传到 OneDrive 目录而无需任何人工干预,您可以使用具有应用程序级权限的 Microsoft Graph API。这样,您可以代表应用程序本身而不是特定用户执行操作。

以下是您需要遵循的步骤:

  1. 设置 Azure AD 应用程序注册

  2. 生成客户端密钥

  3. 授予应用程序权限

  4. 使用客户端凭据授予获取访问令牌:

    使用 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'

  5. 将文件上传到 OneDrive:

    • 使用获取的访问令牌向 OneDrive 的 Microsoft Graph API 端点发出 HTTP 请求。

    使用 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 请求。

© www.soinside.com 2019 - 2024. All rights reserved.