rayafort / microsoft-graph
Microsoft Graph SDK for PHP
Requires
- php: ^8.0 || ^7.1
- ext-json: *
- guzzlehttp/guzzle: ^6.0 || ^7.0
Requires (Dev)
- mikey179/vfsstream: ^1.2
- phpdocumentor/phpdocumentor: ^2.9
- phpunit/phpunit: ^7.5 || ^8.0
README
使用 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() "; } }
开发
调试
您可以使用代理(如 Fiddler 或 Charles Proxy)与库一起调试请求和响应,就像它们穿过电线一样。将代理端口设置在 Graph 对象上,如下所示
$graph->setProxyPort("localhost:8888");
然后,打开您的代理客户端以查看使用库发送的请求和响应。
这对于库没有返回您期望的结果时非常有用,以确定 API 或此 SDK 中是否存在错误。因此,当您尝试对您提出的问题进行分类时,可能会要求您提供此信息。
运行测试
运行
vendor/bin/phpunit --exclude-group functional
从基本目录。
功能测试集旨在针对测试账户运行。目前,测试不会恢复账户状态。
在 Windows 上调试测试
此 SDK 具有一个 XDebug 运行配置,可以将调试器附加到 VS Code,以便您调试测试。
- 将 PHP Debug 扩展安装到 Visual Studio Code。
- 从此存储库的根目录,使用 PowerShell,从存储库根目录运行
php .\tests\GetPhpInfo.php | clip
。这将把 PHP 配置信息复制到剪贴板,我们将在下一步中使用它。 - 将您的剪贴板粘贴到 XDebug 安装向导,并选择 分析我的 phpinfo() 输出。
- 按照生成的说明安装XDebug。请注意,
/ext
目录位于您的PHP目录中。 - 将以下信息添加到您的php.ini文件中
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
现在您可以在测试中设置Visual Studio Code断点。尝试这样做
- 在.\tests\Functional\EventTest.php文件中的
testGetCalendarView
处添加断点。 - 在VS Code中运行
Listen for XDebug
配置。 - 在PowerShell终端中运行
.\vendor\bin\phpunit --filter testGetCalendarView
来运行测试并触发断点。
文档和资源
问题
在代码库中的问题标签页中查看或记录问题。
贡献
请仔细阅读我们的贡献指南,了解如何为此代码库做出贡献。
版权和许可
版权(c)微软公司。保留所有权利。在MIT 许可下授权。
本项目已采用微软开源行为准则。有关更多信息,请参阅行为准则FAQ或联系opencode@microsoft.com,如有任何其他问题或评论。