smileandlearn / microsoft-api-php
用于连接外部登录到Microsoft Azure的库
1.0.1
2022-10-18 09:19 UTC
Requires
- php: >=5.6
- microsoft/microsoft-graph: ^1.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-10-02 17:12:09 UTC
README
Microsoft通过其名为Azure的巨大型服务端应用程序注册提供应用程序注册。为了使用其API和此包装器,您必须在Azure门户中注册自己的Microsoft应用程序。
安装
您可以通过以下命令使用composer将此库安装到项目中
composer require smileandlearn/microsoft-api-php
身份验证
Microsoft使用OAuth 2.0,这意味着访问令牌是从用户那里获取数据的密钥,该用户是访问令牌生成的用户。只有在认证用户允许您的应用程序访问的节点上才会生成访问令牌。
这些节点被称为作用域,它决定了应用程序可以代表认证用户执行哪些类型的数据和功能(相对于其访问令牌)。您可以在此文档中找到适用的作用域。
此包装器还支持租户。如果您只想让您的组织(Azure)的用户使用此应用程序,您可以使用相应的租户,否则对于普通Microsoft用户身份验证,公共设置也足够好。
session_start(); // Important
require "vendor/autoload.php";
use Smileandlearn\Microsoft\mAuth;
$tenant = "common";
$client_id = "6b152c50-4225-48f8-b824-..........";
$client_secret = "jXcajMv~SAFDDF~GBbvNPM7_Q0v5j02_p.";
$scopes = [
"User.Read",
'Files.Read.All',
'.......'
];
$callback_url = "https://domain.com/callback.php";
$microsoft = new mAuth($tenant, $client_id, $client_secret, $callback, $scopes);
获取和设置访问令牌(较短寿命)
// INITIALIZATION $microsoft = new mAuth($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 Smileandlearn\Microsoft\mAuth; use Smileandlearn\Microsoft\Handlers\mSession; $microsoft = new mAuth(mSession::get("tenant_id"),mSession::get("client_id"), mSession::get("client_secret"), mSession::get("redirect_uri"), mSession::get("scopes")); $tokens = $microsoft->getToken($_REQUEST['code'], mSession::get("state")); // Setting access token to the wrapper $microsoft->setAccessToken($tokens->access_token);
获取用户数据
一旦将访问令牌设置为包装器,您只需初始化用户模型,相关数据就会为您获取。
use Smileandlearn\Microsoft\Models\User; $user = (new mUser); // 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 Smileandlearn\Microsoft\mAuth; use Smileandlearn\Microsoft\Handlers\mSession; $microsoft = new mAuth(mSession::get("tenant_id"),mSession::get("client_id"), mSession::get("client_secret"), mSession::get("redirect_uri"), mSession::get("scopes")); $tokens = $microsoft->getToken($_REQUEST['code'], mSession::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 mAuth(mSession::get("tenant_id"),mSession::get("client_id"), mSession::get("client_secret"), mSession::get("redirect_uri"), mSession::get("scopes")); $microsoft->setRefreshToken($refreshToken); $accessToken = $auth->setAccessToken(); $user = (new mUser); // 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许可。您可以在此处查看其详细信息。