smileandlearn/microsoft-api-php

用于连接外部登录到Microsoft Azure的库

1.0.1 2022-10-18 09:19 UTC

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许可。您可以在此处查看其详细信息。