【问题标题】:Using python vcr with Google Video Intelligence - error with request将 python vcr 与 Google Video Intelligence 一起使用 - 请求出错
【发布时间】:2021-03-30 12:31:46
【问题描述】:

当我使用 python vcr 运行测试时,我遇到了一个奇怪的谷歌视频智能 api 请求错误。我想知道是否有其他人看到过这个错误,如果有,为什么会出现这个错误以及如何解决?

我使用 VCR 模拟对视频智能 api 的请求。

我使用 pytest 运行我的测试。

如果我删除 VCR 并重新运行它运行良好,并且如果我在创建 VCR 后再次尝试运行它也运行良好。但是过了一会儿,(目前不确定这是几小时还是几天,我会在运行 vcr 时收到以下错误)。

错误如下:-

"Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. 

这是录像机错误


    E   google.api_core.exceptions.Unauthenticated: 401 Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
    <string>:3: Unauthenticated
    Assertion failed

【问题讨论】:

  • GCP 客户端库将使用您的服务帐户自动为您重新获取用户凭据。它在凭据过期之前执行此操作。凭据会在一段时间后过期(不确定多长时间,可能是一个小时左右)。我对 VCR 不熟悉,但听起来这与您的真实凭据(访问令牌)到期并且无法重新获取新的访问令牌有关,而不是与视频智能的 API 调用有关。希望对您有所帮助。

标签: python google-apps vcr video-intelligence-api


【解决方案1】:

Google Vision Intelligence 就像其他 google 服务一样,使用 gRPC 与服务后端进行通信。不幸的是,VCR 还不支持 gRPC。

VCR 在测试期间记录的唯一内容是 OAuth 令牌(检查了 VCR 生成的磁带文件)。过期后会报Unauthenticated错误

参考:

【讨论】:

    【解决方案2】:

    error 似乎指向无效的身份验证凭据。

    此错误背后可能有两种可能的情况 -

    您可以按照下面提到的步骤来验证您所做的初始设置配置:

    Solution1- 对于自定义服务帐户,即用户管理的服务帐户:

    • 如果您创建了自己的服务帐号,则需要为该服务帐号生成密钥。

    • 您还需要使用以下方法设置环境变量:

      “导出 GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH”

    Solution2- 应用程序默认凭据不可用:

    对于默认服务帐户(已启用 Compute Engine API 的项目将拥有一个使用应用程序默认凭据的 Compute Engine 默认服务帐户),您可以按照以下步骤操作:

    • 您需要使用command 登录:gcloud auth application-default login

    • 如果您想确保authentication process 运行良好,请运行:gcloud auth application-default print-access-token。您应该能够看到访问令牌。

    • 访问令牌的生命周期有限。如果您的应用程序需要在单个访问令牌的生命周期之外访问 Google API,它可以获得刷新令牌。刷新令牌允许您的应用程序获取新的访问令牌。

    • 基本上,gcloud auth application-default login 会获取凭据,以便在本地计算机中的应用程序配置为使用 Application Default Credentials 时使用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2018-09-25
      • 2013-01-22
      • 2016-09-01
      相关资源
      最近更新 更多