首页 > 解决方案 > gcloud auth application-default print-access-token 给出文件未找到错误

问题描述

我目前正在尝试设置一个服务帐户来运行谷歌云视觉 OCR 示例,但由于某种原因,该print-access-token命令一直无法找到我的密钥。我已经完成了 3 次以下步骤,只是为了确保我遵循了文档中的确切步骤:

  1. 使用我已经创建的项目初始化 gcloud SDK
  2. 启用计费
  3. 创建一个 JSON 文件,其中包含以项目所有者为角色的服务帐户的密钥
  4. set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\file\file.json"
  5. 运行 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.

我无法在任何地方找到解决方案。我知道这可能是一个很容易解决的愚蠢问题,但我现在真的很困惑,因为我确信到目前为止我所做的一切都很好。感谢您提前提供任何帮助。

标签: windowsgoogle-cloud-platform

解决方案


我收到了有关文件的消息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


推荐阅读