在使用python vcr运行测试时,我遇到了一个奇怪的google视频智能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
error似乎指向无效的身份验证凭据
此错误背后可能有两种情况-
您可以按照以下提到的步骤验证您所做的初始设置配置:
解决方案1-对于自定义服务帐户,即用户管理的服务帐户:
如果您已经创建了自己的服务帐户,则需要为该服务帐户生成密钥
您还需要使用以下方法设置环境变量:
“导出GOOGLE\u应用程序\u凭据=“密钥路径”
解决方案2-应用程序默认凭据不可用:
对于默认服务帐户(启用计算引擎API的项目将有一个使用应用程序默认凭据的计算引擎默认服务帐户),您可以按照以下步骤操作:
您需要使用command:gcloud auth应用程序默认登录登录
如果要确保authentication process运行正常,请运行:gcloud auth应用程序默认打印访问令牌。您应该能够看到访问令牌
访问令牌的生存期有限。如果您的应用程序需要在单个访问令牌的生存期之外访问Google API,则可以获取刷新令牌。刷新令牌允许您的应用程序获取新的访问令牌
基本上,gcloud auth application default login会获取凭据,使本地计算机中的应用程序在配置为使用应用程序默认凭据时可以使用这些凭据
Google Vision Intelligence与其他Google服务一样,使用gRPC与服务后端进行通信。不幸的是,VCR还不支持gRPC
测试期间VCR记录的唯一内容是OAuth令牌(检查VCR生成的磁带文件)。当它过期时,将导致
Unauthenticated
错误参考:
关于gRPC支持的功能请求 https://github.com/kevin1024/vcrpy/issues/560
用于gRPC(Ruby)的VCRhttps://github.com/btoews/gcr
相关问题 更多 >
编程相关推荐