efisiobova / onedrive-php-api
PHP的OneDrive库。
Requires
- php: >= 5.4 || >= 7.0
- ext-curl: *
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 4.8.26 || 5.4.4
This package is not auto-updated.
Last update: 2024-09-28 20:20:08 UTC
README
PHP的OneDrive SDK是一个开源库,允许PHP应用程序以编程方式与OneDrive API进行交互。
它支持创建、读取、更新、删除(CRUD)文件和文件夹的操作,以及将它们移动或复制到其他文件夹。
要求
使用PHP的OneDrive SDK需要以下条件
- PHP 5.4或更高版本
- PHP的cURL扩展
- Composer 1.0.0-alpha10或更高版本
- 基本的PHP知识
安装
要安装PHP的OneDrive SDK,将onedrive-php-sdk
文件夹复制到您的应用程序源代码树中。示例子文件夹包含示例文件,可以从生产服务器中删除。
配置
要使用此SDK,您需要注册一个OneDrive应用程序。为此,首先登录到您的Microsoft账户,然后访问您的应用程序管理器并创建一个应用程序。
完成后,您的应用程序将被分配,包括客户端ID和客户端密钥。这两个值将很快用于配置PHP的OneDrive SDK。
您还需要创建一个网页,用户在成功使用此SDK登录到他们的OneDrive账户后将被重定向到该网页。通常,这个页面将是一个PHP脚本,您将开始与存储在他们的OneDrive账户中的文件和文件夹进行交互。该页面的URL是回调URI,也将需要配置PHP的OneDrive SDK。
快速入门
一旦您获得了客户端ID、客户端密钥和回调URI,您可以通过以下三个步骤开始使用PHP的OneDrive SDK。
步骤1:通过Composer获取依赖项
从存储库的根目录,使用Composer获取所需的依赖项
$ composer install -n
在此过程中,将创建一个vendor/autoload.php
文件。在下一步中提到,它允许您使用OneDrive SDK中的类,而无需显式地require()
定义它们的文件。
步骤2:保存您的配置
由于您可能需要它们从多个脚本中使用,请将您的客户端ID、客户端密钥和回调URI保存到配置文件中。让我们称它为onedrive-config.php
,并填充以下内容
<?php return [ /* * Your OneDrive client ID. */ 'ONEDRIVE_CLIENT_ID' => '<YOUR_CLIENT_ID>', /* * Your OneDrive client secret. */ 'ONEDRIVE_CLIENT_SECRET' => '<YOUR_CLIENT_SECRET>', /* * Your OneDrive callback URI. */ 'ONEDRIVE_CALLBACK_URI' => '<http://your.domain.com/your-callback.php>', ]; ?>
步骤3:将用户引导到登录页面
此脚本负责根据一组权限从OneDrive API获取登录URL。然后,它需要指导用户访问此URL,以便他们开始登录和权限授予过程。脚本应如下所示(用适当的值替换/path/to
)
<?php ($config = include '/path/to/config.php') or die('Configuration file not found'); require_once '/path/to/onedrive-php-sdk/vendor/autoload.php'; use Efisiobova\Onedrive\Client; // Instantiates a OneDrive client bound to your OneDrive application. $onedrive = new Client(array( 'client_id' => $config['ONEDRIVE_CLIENT_ID'], )); // Gets a log in URL with sufficient privileges from the OneDrive API. $url = $onedrive->getLogInUrl(array( 'wl.signin', 'wl.basic', 'wl.contacts_skydrive', 'wl.skydrive_update', ), $config['ONEDRIVE_CALLBACK_URI']); session_start(); // Persist the OneDrive client' state for next API requests. $_SESSION = array( 'onedrive.client.state' => $onedrive->getState(), ); // Guide the user to the log in URL (you may also use an HTTP/JS redirect). echo "<a href='$url'>Next step</a>"; ?>
步骤4:获取OAuth访问令牌
用户跟随此URL后,他们需要使用有效的Microsoft账户登录,并被要求是否同意允许您的应用程序访问他们的OneDrive账户。
如果他们这样做,他们会被重定向回您的回调URI,并在URL的查询字符串中传递一个代码。位于此URL的脚本负责获取访问令牌(从接收到的代码中获取),并应如下开始(将/path/to
替换为适当的值)
<?php ($config = include '/path/to/config.php') or die('Configuration file not found'); require_once '/path/to/onedrive-php-sdk/vendor/autoload.php'; use Efisiobova\Onedrive\Client; // If we don't have a code in the query string (meaning that the user did not // log in successfully or did not grant privileges requested), we cannot proceed // in obtaining an access token. if (!array_key_exists('code', $_GET)) { throw new \Exception('code undefined in $_GET'); } session_start(); // Attempt to load the OneDrive client' state persisted from the previous // request. if (!array_key_exists('onedrive.client.state', $_SESSION)) { throw new \Exception('onedrive.client.state undefined in $_SESSION'); } $onedrive = new Client(array( 'client_id' => $config['ONEDRIVE_CLIENT_ID'], // Restore the previous state while instantiating this client to proceed in // obtaining an access token. 'state' => $_SESSION['onedrive.client.state'] )); // Obtain the token using the code received by the OneDrive API. $onedrive->obtainAccessToken($config['ONEDRIVE_CLIENT_SECRET'], $_GET['code']); // Persist the OneDrive client' state for next API requests. $_SESSION['onedrive.client.state'] = $onedrive->getState(); // Past this point, you can start using file/folder functions from the SDK. ?>
有关可用类和方法的详细信息,请参阅项目页面,位于Efisiobova。
示例
为了演示OneDrive SDK for PHP的使用,示例以库的形式提供,位于example
子文件夹中。使用示例需要将config.php
文件放置在onedrive-php-sdk
文件夹中,并按照快速入门步骤1中的说明填写。需要OneDrive帐户才能尝试这些示例。
演示
OneDrive SDK for PHP提供的示例文件已部署在用于实时演示的演示网站上。需要OneDrive帐户才能尝试此演示。
如果您使用的是PHP 5.4或更高版本,您可以使用PHP的内置Web服务器在自己的机器上尝试示例
$ php -S yourdomain.com -t example
在使用此方法时,请注意,Microsoft开发者平台不允许您在目标域和重定向URL中使用localhost
或非标准端口。
许可证
OneDrive SDK for PHP受GNU通用公共许可证v3.0许可。
致谢
OneDrive SDK for PHP由Christophe Vidal开发和维护。