tarask/onedrive

Microsoft Graph Api - OneDrive for PHP

v1.1 2019-04-16 12:00 UTC

This package is not auto-updated.

Last update: 2024-09-26 09:58:03 UTC


README

OneDrive REST API 官方文档

https://docs.microsoft.com/en-us/onedrive/developer/rest-api/

安装

$ composer require tarask/onedrive

生成令牌

获取授权码
require __DIR__.'/vendor/autoload.php';

use Tsk\OneDrive\Services\OneDriveService;
use Tsk\OneDrive\Client;

$client = new Client();
$client->setClientId('xxxxxxxx');
$client->setClientSecret('xxxxxxxx');
$client->setRedirectUri('https://');
$client->setScopes([
    OneDriveService::ONEDRIVE_OFFLINE_ACCESS,
    OneDriveService::ONEDRIVE_FILE_READ,
    OneDriveService::ONEDRIVE_FILE_READ_ALL,
    OneDriveService::ONEDRIVE_FILE_READ_WRITE,
    OneDriveService::ONEDRIVE_FILE_READ_WRITE_ALL
]);
$authUrl = $client->createAuthUrl();

echo $authUrl;

在浏览器中输入生成的url。
认证后,您将被重定向到 https://?code=xxxxxxx

兑换代码以获取访问令牌

获取到 code 值后,您可以使用 $client->fetchAccessTokenWithAuthCode($_GET['code']) 恢复您的访问令牌。

$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
file_put_contents(__DIR__.'/token.json', \json_encode($token));
上传大文件
$token = file_get_contents(__DIR__.'/token.json');
$client->setAccessToken($token);

$file = '/path/to/the/file.docx';

$handle   = fopen($file, 'rb');
$fileSize = filesize($file);
$chunkSize = 1024*1024;

$media = new MediaFileUpload($client, 'filename.docx', 'folderId', true, $chunkSize);
$media->setFileSize($fileSize);

$res = null;
while (!feof($handle)) {
    $bytes = fread($handle, $chunkSize);
    $res = $media->nextChunk($bytes);
}

echo 'FileId : ' . $res['id'];
print_r($res)
创建文件夹
$service = new OneDriveService($client);
$service->items->createFolder("folder_name");

在这个示例中,folder_name 是在根文件夹中创建的。您也可以通过添加文件夹Id作为第二个参数来创建子目录。

$service->items->createFolder("folder_name", "parent_folder_id");