当 nodejs 成功时,谷歌云 API 语音转文本 Go 程序返回“提供的作用域未授权”

我从调用语音转文本 API 的 Go 库开始,如 https://cloud.google.com/speech-to-text/docs/libraries#client-libraries-usage-go 中所述。我创建了一个新的服务工作线程,为其指定了“所有者”角色,并将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为指向凭据文件。但是,当它调用该函数时,将返回错误:Recognize()


2021/07/09 16:58:02 failed to recognize: rpc error: code = PermissionDenied desc = Provided scope(s) are not authorized

作为健全性检查,我可以将该文档页面中的 Node 库代码复制粘贴到新的节点脚本中,将GOOGLE_APPLICATION_CREDENTIALS变量设置为相同的凭据文件,然后测试代码运行正常:


$ node quickstart.js

Transcription: how old is the Brooklyn Bridge

因此,非常基本的 Nodejs 客户端示例代码工作正常,但 Go 示例代码则不能。


我已经使用相同的Go项目尝试了存储API,并发现我可以枚举存储桶,获取对象上的Attrs,并使用相同的服务工作线程凭据上传文件,因此我确信它找到了凭据。


如果我进入调用,在内部我可以看到它正在调用并设置范围“https://www.googleapis.com/auth/cloud-platform”,我认为这都是正确的。NewClient()defaultGRPCClientOptionsinternaloption.WithDefaultScopes(DefaultAuthScopes()...),


我正在运行 go 1.16.5,我的有:go.mod


require (

    cloud.google.com/go v0.86.0 // indirect

    cloud.google.com/go/storage v1.16.0 // indirect

    firebase.google.com/go/v4 v4.6.0 // indirect

    github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect

    github.com/gin-gonic/contrib v0.0.0-20201101042839-6a891bf89f19 // indirect

    github.com/gin-gonic/gin v1.7.2 // indirect

    github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f // indirect

    github.com/gorilla/mux v1.8.0 // indirect

    github.com/gorilla/sessions v1.2.1 // indirect

    github.com/mattn/go-isatty v0.0.12 // indirect

    github.com/sirupsen/logrus v1.8.1 // indirect

    golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 // indirect

    google.golang.org/api v0.50.0 // indirect

    google.golang.org/genproto v0.0.0-20210708141623-e76da96a951f // indirect

    google.golang.org/protobuf v1.27.1 // indirect

)

我能做些什么来调查这个范围错误?


慕码人8056858
浏览 86回答 1
1回答

catspeake

我们刚才遇到了这个问题,看到了你的帖子。似乎新版本是问题所在。我们强制1.15.0为我们工作,它继续工作。我们疯了,认为这是一个许可问题。也许是如果他们改变了要求的东西。我会强制v1.15.0,看看这是否能为你修复它。cloud.google.com/go/storage v1.16.0 // indirect
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go