将 python vcr 与 Google Video Intelligence 结合使用 - 请求出错

问题描述 投票:0回答:2

当我使用 python vcr 运行测试时,遇到奇怪的 google video Intelligence api 请求错误。我想知道是否有其他人看到过这个错误,如果是的话,为什么会出现这个错误以及如何解决它?

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

我使用 pytest 来运行我的测试。

如果我删除 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
python google-apps vcr video-intelligence-api
2个回答
2
投票

编辑1

此问题最简单的解决方案是确保 API 不使用 gRPC。

vision.ImageAnnotatorClient(transport="rest")

这将允许 API 使用 RESTful 端点,而不会对 VCR 造成任何中断。

原始回复

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

测试期间 VCR 记录的唯一内容是 OAuth 令牌(检查生成的盒式磁带文件 VCR)。当过期时,会导致

Unauthenticated
错误

参考:


0
投票

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

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

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

解决方案1- 对于自定义服务帐户,即用户管理的服务帐户:

  • 如果您创建了自己的服务帐户,那么您将需要为该服务帐户生成密钥。

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

    “导出 GOOGLE_APPLICATION_CREDENTIALS=”KEY_PATH”

解决方案2-应用程序默认凭据不可用:

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

  • 您需要使用命令登录:gcloud auth应用程序-默认登录

  • 如果您想确保身份验证过程顺利进行,请运行:gcloud auth application-default print-access-token。您应该能够看到访问令牌。

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

  • 基本上,gcloud auth 应用程序默认登录会获取凭据,以便本地计算机中的应用程序配置为使用应用程序默认凭据时可以使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.