adnanhussainturki/microsoft-api-php

PHP 封装 Microsoft Graph API

0.04 2023-10-21 20:50 UTC

This package is auto-updated.

Last update: 2024-09-20 09:16:29 UTC


README

Artboard 1

Microsoft API PHP 封装

Microsoft 通过其名为 Azure 的服务器端大型服务提供应用程序注册。为了使用其 API 和此封装,您必须在 Azure Portal 中注册自己的 Microsoft 应用。

安装

您可以使用以下命令通过 composer 将此库安装到项目中

composer require adnanhussainturki/microsoft-api-php

身份验证

Microsoft 使用 OAuth 2.0,这意味着访问令牌是拉取 Microsoft 服务器上用户数据的密钥(该访问令牌是为该用户生成的)。仅对用户允许您的应用程序访问的节点生成访问令牌。

这些节点被称为作用域,它规定了应用程序可以代表认证用户执行哪些类型的数据和功能(相对于她的访问令牌)。您可以在本文档中获取适用的作用域。

此封装还支持租户。如果您只想让您的组织(Azure)的用户使用此应用程序,请使用相应的租户;否则,对于通用 Microsoft 用户认证,公共设置即可。

<?php
session_start(); // Important
require "vendor/autoload.php";

use myPHPnotes\Microsoft\Auth;

$tenant = "common"; 
$client_id = "6b152c50-4225-48f8-b824-..........";
$client_secret = "jXcajMv~SAFDDF~GBbvNPM7_Q0v5j02_p.";
$scopes = [
            "User.Read",
            'Files.Read.All',
            '.......'
        ];
$callback_url = "https://yoursite.com/callback.php";

$microsoft = new Auth($tenant, $client_id,  $client_secret, $callback, $scopes);

获取 & 设置访问令牌(较短有效期)

    // INITIALIZATION
$microsoft = new Auth($tenant, $client_id,  $client_secret, $callback, $scopes);
    header("location: ". $microsoft->getAuthUrl()); //Redirecting to get access token
// ON CALLBACK
session_start(); 
require "vendor/autoload.php";

use myPHPnotes\Microsoft\Auth;
use myPHPnotes\Microsoft\Handlers\Session;

$microsoft = new Auth(Session::get("tenant_id"),Session::get("client_id"),  Session::get("client_secret"), Session::get("redirect_uri"), Session::get("scopes"));
$tokens = $microsoft->getToken($_REQUEST['code'], Session::get("state"));

// Setting access token to the wrapper
$microsoft->setAccessToken($tokens->access_token);
 

获取用户数据

一旦访问令牌设置到封装器中,您只需初始化用户模型,相关数据将自动为您提取。

use myPHPnotes\Microsoft\Models\User;

$user = (new User); // User get pulled only if access token was generated for scope User.Read
echo $user->data->getGivenName(); // Adnan
echo $user->data->getOnPremisesImmutableId(); // adnanhussainturki@gmail.com

 

获取刷新令牌(较长期限)

为了获取访问令牌和刷新令牌,您需要提供 offline_access 作为作用域,然后获取访问令牌。在回调中,您将收到访问令牌和刷新令牌。

// ON CALLBACK
session_start(); 
require "vendor/autoload.php";

use myPHPnotes\Microsoft\Auth;
use myPHPnotes\Microsoft\Handlers\Session;

$microsoft = new Auth(Session::get("tenant_id"),Session::get("client_id"),  Session::get("client_secret"), Session::get("redirect_uri"), Session::get("scopes"));
$tokens = $microsoft->getToken($_REQUEST['code'], Session::get("state"));

$refreshToken = $tokens->refresh_token;
 

使用刷新令牌

如果您有一个用户的活跃刷新令牌,您不需要请求用户权限来获取针对该用户的访问令牌。您可以将刷新令牌设置到封装器中,封装器将为您获取访问令牌。

$refreshToken = "M.R3_BAY.CbCa*dfsafayrRe9NFNcFEWJBZF9*sXaIYH1HHEFb6i2uUFCGT0KvyXzXulrjPqC3qRgw*NAuajBICU6PmdvfHOyeWGdmE8tUZ4f6XSluF3aKHBGbs*FGSvY7nkUgHhJ*F*4Pfg6SLuNNHY8mh6U8pMNuY1EwnKgAI9s1X4Tt0VXm*mIeLoiw8MTifTukr1aK!7rQOA18ow84bOSpPyu7lZbwATC2pygflRZEOPiHi2!MGrw6CuCxLPgGVu88rsWZJJw3rLjSTofJF78Sgb8ZjkIJAwcfZukotN0lF0GaTThWvM35QEricRyVBYxIC*8iXywFmqKkeClJFeVYx!US35inDel3oXg9**jtd8FAN7x!050JGWN7iJgJA!eMg4h1L6PjcmCZfuVnv0s5eGJ3jauimRBPKJLT6rgzVvkAtI5mJitumZzKnzQNRCxn03w$$";

$microsoft = new Auth(Session::get("tenant_id"),Session::get("client_id"),  Session::get("client_secret"), Session::get("redirect_uri"), Session::get("scopes"));
 
$microsoft->setRefreshToken($refreshToken);
$accessToken = $auth->setAccessToken();

$user = (new User); // User get pulled only if refresh token was generated for scope User.Read
echo $user->data->getGivenName(); // Adnan
echo $user->data->getOnPremisesImmutableId(); // adnanhussainturki@gmail.com

 

请我喝杯咖啡

如何贡献

  • 创建分支,进行更改,发送拉取请求。
  • 提出问题

许可

Apache 2.0 许可。您可以在这里查看其详细信息。