forikal-uk / 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: 2022-02-01 13:13:30 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
测试代码。如果测试失败,修复代码。 - 提交并推送更改。