adnanhussainturki / microsoft-api-php
PHP 封装 Microsoft Graph API
0.04
2023-10-21 20:50 UTC
Requires
- php: >=5.6
- league/flysystem: ^1.0
- microsoft/microsoft-graph: ^1.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-09-20 09:16:29 UTC
README
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 许可。您可以在这里查看其详细信息。