efisiobova/onedrive-php-api

dev-master 2017-01-06 14:11 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:20:08 UTC


README

Latest Stable Version Build Status Code Coverage StyleCI

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开发和维护。