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

a14dhokn  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(95)

我有一个客户需要将文件自动上传到其组织的OneDrive目录。此上传需要完全自动化,并需要在没有任何人为干预的情况下运行。我已经阅读了大量的微软文档以及其他类似的问题,但我发现的所有解决方案都有一个步骤,需要用户被引导到登录页面。在我的例子中,没有用户,也没有浏览器。理想情况下,PHP SDK会有所帮助,但如果我可以通过纯HTTP请求来实现这一点,那也会起作用。
我试过几个PHP SDK,所有这些都需要一定程度的人机交互。

irlmq6kh

irlmq6kh1#

我已经能够通过SharePoint使用SDK找到here来实现这一点。下面的代码,如果有人正在与此斗争。

define('MS_URL', 'https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token');

    //Authenticate
    $guzzle = new \GuzzleHttp\Client();
    $url = MS_URL;
    $token = json_decode($guzzle->post($url, array('form_params' => array('client_id' => MS_CLIENT_ID, 'client_secret' => MS_CLIENT_SECRET, 'scope' => 'https://graph.microsoft.com/.default', 'grant_type' => 'client_credentials')))->getBody()->getContents());
    $access_token = $token->access_token;

    //Upload
    $graph = new \Microsoft\Graph\Graph();
    $graph->setBaseUrl('https://graph.microsoft.com/')->setApiVersion('v1.0')->setAccessToken($access_token);
    $graph->createRequest('PUT', '/sites/'.MS_SHAREPOINT_BACKUP_SITE_ID.'/drive/root:/'.$new_filename.':/content')->upload($path_to_local_file);

相关问题