xmlsquad / ping-drive
Symfony 控制台命令,用于报告寻找和读取 Google Drive 文件夹或文件内容的过程
Requires
- php: >=7.1
- google/apiclient: ^2.0
- symfony/console: ^3.4
- symfony/filesystem: ^3.4
- symfony/yaml: ^3.4
- xmlsquad/xml-authoring-library: 0.3.3
Requires (Dev)
- phpunit/phpunit: ^7.1
This package is not auto-updated.
Last update: 2024-09-29 06:26:01 UTC
README
Symfony 控制台命令,用于报告寻找和读取 Google Drive 文件夹或文件内容的过程。
受同名终端命令的启发: ping
设计用于在 https://github.com/xmlsquad/xml-authoring-tools 的 Symfony 控制台应用程序上下文中使用,后者反过来又用于基于 xml-authoring-project 的已知目录结构中。
此简单命令应用于测试连接和访问特定 Google Drive 实体(文件或文件夹)。为此,它应该尽可能少地做其他事情,只是提供其进度的反馈。
要求
- PHP ≥7.1
- Composer(安装所需)
- Google API 密钥
如何获取 Google API 客户端密钥文件
以下安装和使用说明假定您已创建 OAuth Google API 密钥并将其存储在本地工作站上。
- 打开 Google API 控制台。
- 创建一个项目或选择一个现有项目。
- 在项目中启用以下 API: Drive 和 Sheets。
- 转到“凭据”部分,“凭据”选项卡,并 创建“OAuth 客户端 ID”凭据。或者使用现有的 OAuth 凭据。
- 点击“OAuth 2.0 客户端 ID”列表右侧的下载按钮(⬇️)。
安装
作为独立项目安装
打开终端并运行
# Using composer's create-project command composer create-project xmlsquad/ping-drive <directoryName>
或
# Cloning the git project git clone https://github.com/xmlsquad/ping-drive.git <directoryName> composer install -d <directoryName>
其中 <directoryName>
是必须安装命令的目录。在这种情况下,通过运行来启动命令
php <directoryName>/bin/ping-drive --help
以下 用法 部分中描述了更多选项和参数。
作为项目依赖安装
打开终端,转到项目根目录并运行
composer require xmlsquad/ping-drive
在这种情况下,通过运行来启动命令
php vendor/bin/ping-drive --help
用法
该命令代表一个 Google 用户执行。因此,您至少需要在第一次运行期间进行身份验证。我说“至少”,因为如果提供了 --gApiAccessTokenFile
,则可以存储身份验证令牌以供后续调用使用。
要使用它,请运行命令并遵循其说明。
命令签名
ping-drive -v --gApiOAuthSecretFile=GAPIOAUTHSECRETFILE --gApiAccessTokenFile=ACCESS-TOKEN-FILE --forceAuthenticate -q URL
URL
指定要 ping 的 URL。此参数是必需的。-v
或--verbose
打开详细模式。在此模式下,将打印详细进度信息。否则,只打印关键信息。--gApiOAuthSecretFile
指定包含 Google API 客户端密钥的 JSON 文件的路径。以下说明如何获取它。--gApiAccessTokenFile
指定一个包含 Google API 访问令牌的 JSON 文件的路径。访问令牌文件是可选的。如果设置了文件路径,访问令牌将被保存,后续执行将不会提示授权。如果给定的文件不存在,则将其创建。--forceAuthenticate
使命令即使提供了访问令牌也会提示 Google 认证。您可以在遇到授权问题或需要认证到另一个账户时使用它。-q
或--quiet
使命令不打印任何内容。
行为
命令打印 URL 信息
- 如果是 Google 文件夹,列出文件夹内容。
- 如果是 Google 表格,打印表格名称和一些表格内容。
- 如果是 Google Drive 上其他类型的文件,打印文件名称和类型。
- 如果是 无法访问的 Google Drive 文件,打印相应的消息。
- 否则打印错误消息。
使用示例
php vendor/bin/ping-drive -v https://drive.google.com/drive/u/0/folders/0B5q9i2h-vGaCQXhLZFNLT2JyV0U
# Prints the folder content
如果文件可访问,则命令以状态码 0 退出,如果文件不可访问,则状态码为 1。因此,该命令可以用于复杂的 bash 脚本,例如
if [[ ping-drive -q ... ]]; then echo "Success!"; else echo "Fail"; fi
使用配置文件
客户端密钥和访问令牌路径可以从配置文件中读取。在这种情况下,您在启动命令时不需要设置此选项。
配置文件必须命名为 XmlAuthoringProjectSettings.yaml
,并位于运行命令的目录中或在父目录之一中。 XmlAuthoringProjectSettings.yaml.dist 是包含所需参数的配置文件示例。
故障排除
如果您有一个以 Failed to authenticate to Google:
开头的错误消息,而其余的消息没有提供太多信息,请执行以下操作
- 请再次检查您是否遵循了 API 密钥说明,并使用正确的 类型 的密钥。
- 尝试通过运行带有
--forceAuthenticate
选项的命令从零开始重新认证。 - 如果这不起作用,请再次创建 Google API 客户端密钥文件,并确保命令使用新文件。您可以通过运行带有
-v
选项的命令来查看正在使用的密钥文件。
贡献
- 克隆存储库。
- 在控制台中运行
composer install
以安装依赖项。 - 进行更改。确保代码遵循 PSR-2 标准。
- 通过运行
composer test
测试代码。如果测试失败,修复代码。 - 提交并推送更改。