我正在尝试按照 Google 的本指南 将 google assistant SDK 嵌入到我的树莓派中。但是,我坚持在指南的生成凭据步骤中配置Oauth2凭据。
我安装了
google-auth-oauthlib[tool]
包来运行google-oauthlib-tool
。当我按照指南中的说明运行该工具时,出现以下错误:
$ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--save --headless --client-secrets /path/to/client_secret_client-id.json
Error: no such option: --headless
(PS。我将 --client-secrets 路径修改为从 google projects API 凭据页面下载的正确 json 文件)
当我从命令中删除
--headless
选项时,该工具会按预期生成授权 URL。我可以转到 URL,登录到我的谷歌帐户并激活必要的权限。接下来,我得到一个谷歌“无法访问的网站”页面,因为它指的是一个以 localhost:8080/...
开头的 URL。从完整的 url 中,我可以提取所需的 4/...
代码来完成授权过程......理论上,我随后注意到 google-oauthlib-tool
从未要求我在终端中提供授权代码。它只是显示一个空行但它应该说(根据step 4):
Enter the authorization code:
有谁知道为什么
google-oauthlib-tool
从不询问授权码?它可能与缺少 --headless
选项有关,但我对整个 Oauth2 过程了解不够。
我已经尝试强制重新安装所有相关工具,但这并没有解决问题。
会议信息:
蟒蛇3.9.2
点 23.0.1
google-auth-oauthlib 1.0.0
linux内核:Linux 6.1.21-v8+ aarch64
操作系统:Debian GNU/Linux 11(靶心)
平台:树莓派4B
我找到了我自己问题的答案,但我会留下这篇文章以供将来参考。
背景: 我仔细研究了“无头”的实际含义(对你们大多数人来说可能是非常基本的)。它指的是“无头客户端”,也就是没有 GUI(图形用户界面)运行的应用程序/操作系统。基本上,只有命令行。 因此,我意识到我安装了树莓派操作系统的 GUI 版本,而不是精简版。谷歌指南可能假设我正在运行一个无头客户端。
解决方案: 我没有通过 ssh 远程连接到我的树莓派,而是直接通过 GUI 从设备本身打开命令行,并在没有
google-oauthlib-tool
选项的情况下运行 --headless
。然后 localhost:8080/...
链接起作用了,它在我的设备上创建了凭据文件。