rayafort/microsoft-graph

Microsoft Graph SDK for PHP

v2.0.1 2021-01-23 15:21 UTC

README

Build Status Latest Stable Version

使用 PHP Connect 示例开始

如果您想尝试 PHP 库,您可以使用 PHP Connect 示例 快速开始。这个示例将引导您开始一个小型的 Laravel 项目,帮助您进行注册、身份验证,并对服务进行简单的调用。

安装 SDK

您可以使用 Composer 安装 PHP SDK,运行 composer require microsoft/microsoft-graph,或者编辑您的 composer.json 文件

{
    "require": {
        "microsoft/microsoft-graph": "^1.20"
    }
}

开始使用 Microsoft Graph

注册您的应用程序

使用您的租户 Active Directory 中的 Microsoft Azure Active Directory 注册您的应用程序以使用 Microsoft Graph API,以支持您租户的工作或学校用户,或多个租户。

使用 Microsoft Graph 服务进行身份验证

PHP 的 Microsoft Graph SDK 不包含任何默认的身份验证实现。《thephpleague/oauth2-client》库将为您处理 OAuth2 流,并提供一个可用的令牌以查询 Graph。

要作为应用程序进行身份验证,您可以使用随库预安装的 Guzzle HTTP 客户端,例如

$guzzle = new \GuzzleHttp\Client();
$url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/token?api-version=1.0';
$token = json_decode($guzzle->post($url, [
    'form_params' => [
        'client_id' => $clientId,
        'client_secret' => $clientSecret,
        'resource' => 'https://graph.microsoft.com/',
        'grant_type' => 'client_credentials',
    ],
])->getBody()->getContents());
$accessToken = $token->access_token;

有关如何在 Laravel 应用程序中使用 Oauth2 并使用 Graph 的集成示例,请参阅 PHP Connect 示例

使用 v1.0 终端点和模型调用 Microsoft Graph

以下是一个示例,说明如何调用 Microsoft Graph。

use Microsoft\Graph\Graph;
use Microsoft\Graph\Model;

class UsageExample
{
    public function run()
    {
        $accessToken = 'xxx';

        $graph = new Graph();
        $graph->setAccessToken($accessToken);

        $user = $graph->createRequest("GET", "/me")
                      ->setReturnType(Model\User::class)
                      ->execute();

        echo "Hello, I am $user->getGivenName() ";
    }
}

使用 beta 终端点和模型调用 Microsoft Graph

以下是一个示例,说明如何调用 Microsoft Graph。

use Microsoft\Graph\Graph;
use Beta\Microsoft\Graph\Model as BetaModel;

class UsageExample
{
    public function run()
    {
        $accessToken = 'xxx';

        $graph = new Graph();
        $graph->setAccessToken($accessToken);

        $user = $graph->setApiVersion("beta")
                      ->createRequest("GET", "/me")
                      ->setReturnType(BetaModel\User::class)
                      ->execute();

        echo "Hello, I am $user->getGivenName() ";
    }
}

开发

调试

您可以使用代理(如 FiddlerCharles Proxy)与库一起调试请求和响应,就像它们穿过电线一样。将代理端口设置在 Graph 对象上,如下所示

$graph->setProxyPort("localhost:8888");

然后,打开您的代理客户端以查看使用库发送的请求和响应。

Screenshot of Fiddler /me/sendmail request and response

这对于库没有返回您期望的结果时非常有用,以确定 API 或此 SDK 中是否存在错误。因此,当您尝试对您提出的问题进行分类时,可能会要求您提供此信息。

运行测试

运行

vendor/bin/phpunit --exclude-group functional

从基本目录。

功能测试集旨在针对测试账户运行。目前,测试不会恢复账户状态。

在 Windows 上调试测试

此 SDK 具有一个 XDebug 运行配置,可以将调试器附加到 VS Code,以便您调试测试。

  1. PHP Debug 扩展安装到 Visual Studio Code。
  2. 从此存储库的根目录,使用 PowerShell,从存储库根目录运行 php .\tests\GetPhpInfo.php | clip。这将把 PHP 配置信息复制到剪贴板,我们将在下一步中使用它。
  3. 将您的剪贴板粘贴到 XDebug 安装向导,并选择 分析我的 phpinfo() 输出
  4. 按照生成的说明安装XDebug。请注意,/ext 目录位于您的PHP目录中。
  5. 将以下信息添加到您的php.ini文件中
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

现在您可以在测试中设置Visual Studio Code断点。尝试这样做

  1. .\tests\Functional\EventTest.php文件中的testGetCalendarView处添加断点。
  2. 在VS Code中运行Listen for XDebug配置。
  3. 在PowerShell终端中运行.\vendor\bin\phpunit --filter testGetCalendarView来运行测试并触发断点。

文档和资源

问题

在代码库中的问题标签页中查看或记录问题。

贡献

请仔细阅读我们的贡献指南,了解如何为此代码库做出贡献。

版权和许可

版权(c)微软公司。保留所有权利。在MIT 许可下授权。

本项目已采用微软开源行为准则。有关更多信息,请参阅行为准则FAQ或联系opencode@microsoft.com,如有任何其他问题或评论。