vatri / google-drive-bundle

Google Drive API Bundle

安装: 6,465

依赖关系: 1

建议者: 0

安全: 0

星星: 9

关注者: 3

分支: 5

开放问题: 4

类型:symfony-bundle

v2.0.0 2024-09-24 20:50 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。

  1. 运行

php bin/console debug:router

并检查您是否有一个类似的路由

vatri_google_drive_auth       ANY      ANY      ANY    <href=>/vatri_google_drive/auth
  1. 现在为了认证用户,您需要添加如下链接到路由
<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(一个类)的统一响应