vatri / google-drive-bundle
Google Drive API Bundle
v2.0.0
2024-09-24 20:50 UTC
Requires
- google/apiclient: ^2.2
- symfony/framework-bundle: ^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^8.2
This package is auto-updated.
Last update: 2024-09-24 20:51:28 UTC
README
为Symfony 6和7提供的Google Drive API Bundle。
功能
- 通过Google API授权
- 管理Google Drive文件和文件夹
- 创建文件夹(递归)
- 检查文件夹是否存在
- 通过ID查找文件
- 删除文件
- 下载文件
- 列出文件
- 将文件复制到特定目录
- 上传文件
- 给文件/文件夹添加“星标”标记
- 重命名资源(文件或文件夹)
安装
使用Symfony Flex的应用程序
打开命令行,进入您的项目目录并执行以下操作
$ composer require vatri/google-drive-bundle
未使用Symfony Flex的应用程序
步骤1:下载Bundle
打开命令行,进入您的项目目录并执行以下命令以下载此Bundle的最新稳定版本
$ composer require vatri/google-drive-bundle
此命令需要您全局安装了Composer,请参阅Composer文档中的安装章节。
步骤2:启用Bundle
然后,通过将其添加到项目config/bundles.php
文件中注册的Bundle列表中来启用Bundle
// config/bundles.php return [ // ... App\Vatri\GoogleDriveBundle\VatriGoogleDriveBundle::class => ['dev' => true, 'test' => true], ];
用法
1. 在您的.env文件中添加/编辑以下变量
VATRI_GOOGLE_DRIVE_CREDENTIALS_FILE=config/YOUR_FILENAME.json`
VATRI_GOOGLE_DRIVE_REDIRECT_AFTER_AUTH=/
别忘了用您的值替换默认值。
2. 创建(或检查是否存在)/config/routes/vatri_google_drive.yaml文件,内容如下
vatri_google_drive: resource: '@VatriGoogleDriveBundle/Controller/' type: annotation
3. 下载并配置JSON凭证文件
从Google控制台下载您的JSON凭证文件到Symfony项目中的/config文件夹。
在.env文件中编辑以下变量
VATRI_GOOGLE_DRIVE_CREDENTIALS_FILE=config/google-drive-api-client_secrets.json-example.json
VATRI_GOOGLE_DRIVE_REDIRECT_AFTER_AUTH=/path/to/your/route
4. 检查并使用AuthController
AuthController是默认控制器,用于通过Google API授权用户。默认情况下,它将访问令牌保存到cookie中。
请注意,如果您使用此控制器进行授权,您需要在Google控制台凭证配置中添加以下路由作为回调URL。
- 运行
php bin/console debug:router
并检查您是否有一个类似的路由
vatri_google_drive_auth ANY ANY ANY <href=>/vatri_google_drive/auth
- 现在为了认证用户,您需要添加如下链接到路由
<a href="{{ path('vatri_google_drive_auth') }}"> Login </a>
5. 在您的控制器或另一个Symfony部分中使用DriveApiService
use Vatri\GoogleDriveBundle\Service\DriveApiService; ... public function test(DriveApiService $driveApiService): Response { if($driveApiService->isTokenExpired()){ return $this->redirectToRoute( $driveApiService->getAuthRouteName() ); } $folderId = '[YOUR ID]'; $res = $driveApiService->listFiles($folderId, false, true ); dd($res); }
6. 检查Drive API访问令牌是否已过期,如果需要则进行授权
将以下代码添加到您的控制器或其他部分
if($driveApiService->isTokenExpired()){ // When auth is finished, redirect back to this URL: $driveApiService->setRedirectPathAfterAuth( $this->get('request_stack')->getCurrentRequest()->getRequestUri() ); // Redirect return $this->redirectToRoute( $driveApiService->getAuthRouteName() ); }
路线图
版本1.2
- Symfony Flex配方
- 注销控制器
- 配置令牌存储(包括自定义存储)
版本1.1
- renameFolder()方法
版本1.0
- 使用refresh_token自动刷新access_token
- 来自DriveApiService(一个类)的统一响应