microsoft/microsoft-graph

Microsoft Graph SDK for PHP

v2.14.0 2024-09-19 07:19 UTC

This package is auto-updated.

Last update: 2024-09-19 07:20:00 UTC


README

Build Status Latest Stable Version Total Downloads PHP Version Require

安装SDK

您可以通过编辑composer.json文件,使用Composer安装PHP SDK

{
    "require": {
        // x-release-please-start-version
        "microsoft/microsoft-graph": "^2.14.0"
        // x-release-please-end
    }
}

开始使用Microsoft Graph

注册您的应用程序

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

创建Token请求上下文

Token请求上下文包含用于验证请求的凭据。SDK支持与OAuth 2.0流程相一致的各种上下文:client_credentialsauthorization_codeon_behalf_of,支持基于密钥和基于证书的客户端身份验证。

在底层,Token请求上下文被传递给身份验证提供者,它获取、缓存和刷新访问令牌,确保所有请求都针对Microsoft身份平台进行身份验证。

以下示例创建了一个TokenRequestContext,它在不需要用户的情况下获取访问权限

<?php
use Microsoft\Kiota\Authentication\Oauth\ClientCredentialContext;
use Microsoft\Graph\Core\Authentication\GraphPhpLeagueAuthenticationProvider;

$tokenRequestContext = new ClientCredentialContext(
    'tenantId',
    'clientId',
    'clientSecret'
);

为了代表用户获取访问权限

<?php
use Microsoft\Kiota\Authentication\Oauth\AuthorizationCodeContext;
use Microsoft\Graph\Core\Authentication\GraphPhpLeagueAuthenticationProvider;

$tokenRequestContext = new AuthorizationCodeContext(
    'tenantId',
    'clientId',
    'clientSecret',
    'authCode',
    'redirectUri'
);

请注意,您的应用程序需要处理将用户重定向到Microsoft身份登录页面,以获取传递到AuthorizationCodeContext中的authorization_code。有关authorization_code授权流的更多信息,请参阅此处。要跨会话中的多个请求保持用户登录状态,请参阅访问令牌管理部分。

初始化GraphServiceClient

使用Token请求上下文和可选的作用域,可以初始化GraphServiceClient

use Microsoft\Graph\GraphServiceClient;

// Defaults to using https://graph.microsoft.com/.default scopes
$graphServiceClient = new GraphServiceClient($tokenRequestContext);

// With specific scopes
$scopes = ['User.Read', 'Mail.ReadWrite'];
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);

要使用已获取的访问令牌初始化GraphServiceClient或获取SDK为您获取的访问令牌,请参阅访问令牌管理部分。

有关Graph客户端配置的更多信息,请参阅更多示例

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

以下示例显示了如何从Microsoft Graph获取用户

<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Kiota\Abstractions\ApiException;
use Microsoft\Kiota\Authentication\Oauth\ClientCredentialContext;

$tokenRequestContext = new ClientCredentialContext(
    'tenantId',
    'clientId',
    'clientSecret'
);
$graphServiceClient = new GraphServiceClient($tokenRequestContext);

try {
    $user = $graphServiceClient->users()->byUserId('[userPrincipalName]')->get()->wait();
    echo "Hello, I am {$user->getGivenName()}";

} catch (ApiException $ex) {
    echo $ex->getError()->getMessage();
}

注意:SDK默认设计为异步请求。操作(get()post()...)返回一个Promise。要获取结果,请在操作后调用wait()。示例:->get()->wait();

请注意,调用me()需要一个已登录的用户,因此需要委托权限(使用authorization_code流获取)

<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Kiota\Abstractions\ApiException;
use Microsoft\Kiota\Authentication\Oauth\AuthorizationCodeContext;

$tokenRequestContext = new AuthorizationCodeContext(
    'tenantId',
    'clientId',
    'clientSecret',
    'authCode',
    'redirectUri'
);
$scopes = ['User.Read'];
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);

try {
    $user = $graphServiceClient->me()->get()->wait();
    echo "Hello, I am {$user->getGivenName()}";
} catch (ApiException $ex) {
    echo $ex->getError()->getMessage();
}

文档和资源

升级

有关重大升级期间引入的破坏性更改、错误修复和新功能等详细信息,请查看我们的升级指南

开发

运行测试

运行

vendor/bin/phpunit

从基本目录。

问题

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

贡献

请仔细阅读我们的贡献指南,了解如何为这个仓库做出贡献。

版权和许可

版权(c)微软公司。版权所有。在MIT许可协议下许可。

本项目采用了微软开源行为准则。更多信息请参阅行为准则FAQ,或通过[email protected]联系以获取任何额外问题或意见。