编程

Laravel Microsoft Graph

381 2025-01-25 02:28:00

Microsoft Graph 是一个强大的工具,允许开发人员访问和利用来自各种 Microsoft 服务的数据,包括 Office 365、Windows 和安全平台。

由开发人员 David Carr 创建的 Laravel Microsoft Graph 是一个提供与 Microsoft Graph REST API 无缝集成的软件包,使开发人员更容易与 Microsoft 的一些云服务进行交互。

主要特性

当前有以下一些特性:

  • 简化身份验证:使用 Microsoft Graph 简化 OAuth 2.0 身份验证过程,允许以用户或租户管理员身份登录。
  • 身份验证中间件:仅限经过身份验证的 M365 用户访问路由。
  • 联系人管理:创建、读取、更新和删除用户的联系人。
  • 邮件管理:访问收件箱,发送并管理邮件。
  • 文件处理:轻松处理 OneDrive 文件和 SharePoint 文档。

安装及配置

首先,通过 Composer 安装包:

composer require dcblogdev/laravel-microsoft-graph

下一步,发布配置文件:

php artisan vendor:publish --provider="Dcblogdev\MsGraph\MsGraphServiceProvider" --tag="config"

该命令将创建配置文件 config/msgraph.php

然后使用如下凭证更新 .env 文件:

MSGRAPH_CLIENT_ID=your-client-id
MSGRAPH_SECRET_ID=your-client-secret
MSGRAPH_TENANT_ID=your-tenant-id
 
MSGRAPH_OAUTH_URL=https://yourdomain.com/msgraph/oauth
MSGRAPH_LANDING_URL=https://yourdomain.com/msgraph

然后发布迁移:

php artisan vendor:publish --provider="Dcblogdev\MsGraph\MsGraphServiceProvider" --tag="migrations"

注意:如果将 Microsoft Graph 用作身份验证服务,则还需要添加一个监听器:

php artisan vendor:publish --provider="Dcblogdev\MsGraph\MsGraphServiceProvider" --tag="Listeners"

这个命令将创建 app/Listeners/NewMicrosoft365SignInListener.php,然后你将其添加到 app/Providers/AppServiceProvider

public function boot(): void
{
    Event::listen(
        NewMicrosoft365SignInEvent::class,
        [NewMicrosoft365SignInListener::class, 'handle']
    );
}

示例

1. 认证用户

use Dcblogdev\MsGraph\MsGraph;
 
// Redirect user to Microsoft login page
return (new MsGraph())->connect();
 
// Handle callback after login
$msGraph = new MsGraph();
$user = $msGraph->get('/me');
 
return $user;

2. 发送邮件

use Dcblogdev\MsGraph\MsGraph;
 
$msGraph = new MsGraph();
 
$msGraph->emails()
        ->to(['test@example.com'])
        ->subject('Hello from Laravel News')
        ->body('This is a test email from Laravel News.')
        ->send();

3. 列出 OneDrive 文件

use Dcblogdev\MsGraph\MsGraph;
 
$msGraph = new MsGraph();
$files = $msGraph->files()->getFiles('/path/to/folder', 'me');
# The second parameter determines whether to use your one drive or a Groups
# $files = $msGraph->files()->getFiles('/path/to/folder', "groups/$groupId");
 
return $files;

如果你在 M365 生态系统中使用 Laravel,那么 Laravel Microsoft Graph 包可能是你不可或缺的工具。其简单的 API 集成和用户友好的方法使其成为需要访问 Microsoft Graph 功能的 Laravel 项目的绝佳选择。

Github 源码:https://github.com/dcblogdev/laravel-microsoft-graph。