windows - gcloud auth application-default print-access-token 给出文件未找到错误
问题描述
我目前正在尝试设置一个服务帐户来运行谷歌云视觉 OCR 示例,但由于某种原因,该print-access-token
命令一直无法找到我的密钥。我已经完成了 3 次以下步骤,只是为了确保我遵循了文档中的确切步骤:
- 使用我已经创建的项目初始化 gcloud SDK
- 启用计费
- 创建一个 JSON 文件,其中包含以项目所有者为角色的服务帐户的密钥
set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\file\file.json"
- 运行 gcloud auth application-default print-access-token
为了安全起见,我也尝试过使用gcloud auth application-default login
它,因为它似乎适用于对打印访问令牌有不同问题但仍然没有运气的其他人。
这是我使用 print-access-token 收到的错误
ERROR: (gcloud.auth.application-default.print-access-token) File "C:\path\file.json" was not found.
无论如何,我都尝试运行代码示例并收到以下异常:
Exception in thread "AWT-EventQueue-0" com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the vision.googleapis.com.
我无法在任何地方找到解决方案。我知道这可能是一个很容易解决的愚蠢问题,但我现在真的很困惑,因为我确信到目前为止我所做的一切都很好。感谢您提前提供任何帮助。
解决方案
我收到了有关文件的消息was not found
,但我通过使用set GOOGLE_APPLICATION_CREDENTIALS
不带双引号的命令解决了这个问题,例如
我建议使用不带空格或特殊字符的路径,例如C:\creds\cred1.json
set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\file\file.json
此环境变量仅适用于当前 CMD 窗口不是系统范围的环境变量
该命令gcloud auth application-default login
基于允许测试某些 API 的用户帐户创建系统范围的凭据,但对于其他类似vision
的,必须使用服务帐户凭据
要解决此问题,您需要将环境变量定义GOOGLE_APPLICATION_CREDENTIALS
为用户会话或系统范围的环境变量
GOOGLE_APPLICATION_CREDENTIALS
在此步骤之后,您的代码将在这种情况下识别存储在环境变量中的凭据C:\path\to\file\file.json
推荐阅读
- c# - 应用 WPF DataGrid CellStyle 隐式样式而不是显式
- javascript - API 调用主体有效负载的 Axios 实例(为所有 API 创建公共对象)
- java - 如何检查二叉搜索树是否完全平衡?
- jsf - 使用 preRenderView,以正确的方式将用户重定向到其他页面
- sql - 如何使用多个 LIKE 谓词优化查询
- python - 如何修复'translate()得到一个意外的关键字参数'格式''
- python - 使用 PeriodIndex 绘制熊猫数据框
- php - PHP 中的正则表达式返回 preg_match():编译失败:PCRE 不支持 \L、\l、\N{name}、\U 或 \u
- python - 如何避免在这个特定的 python 代码片段中使用循环?
- mysql - 计数函数只返回一行,但只显示一个客户的前 5 个航班号的计数。这里有什么问题?