我正在开发一个Android应用程序,目前谷歌语音通过谷歌云流Speech API,但我无法获得身份验证工作。谷歌Oauth2与谷歌语音API服务帐户rpc不起作用
我想使用Google Service API中的OAuth2和authkey.json在Google Cloud API上进行身份验证。
我使用来自程序包google.cloud.speech.v1beta1
的SpeechGrpc.SpeechStub
类来调用RPC方法。这需要通过它与API通信的构造函数中的ManagedChannel
。
我发现展示了如何创建一个ManagedChannel
与GoogleCrendential
这里一个例子:GoogleCloudPlatform/java-docs-samples
它的工作,直到拦截凭证进入通道的点。的ClientAuthInterceptor
类,这是在本例中使用拦截凭证到通道是
- 弃用
- 仅需
com.google.auth.Credentials
作为参数而从com.google.api.client.auth.oauth2.Credential
GoogleCredential
继承。
下一个尝试:Google的例子:Using OAuth 2.0 with the Google API Client Library for Java
它建议我使用Plus
来包装GoogleCrendential
。 但Plus
也deprecated
甚至不包含 无论是方法
builder(new NetHttpTransport(), JacksonFactory.getDefaultInstance(), credential)
如图话题GoogleCredential该网页上,也没有一个方法
Plus.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APPLICATION_NAME).build();
如第ServiceAccounts显示在该页面。
由于用于调用rpc方法的SpeechGrpc.SpeechStub
类需要ManagedChannel
才能工作,因此我用尽了选项。
的另一种选择也许可以是通过该方法
SpeechGrpc.newStub(channel).withCallCredentials(CallCredentials creds)
将凭据添加到SpeechGrpc.SpeechStub
,而不是到ManagedChannel
如果这是可能的,我想知道,我怎么可以创建CallCredentials
从服务帐户的authkey.json
文件中删除。
我通读了每个示例,谷歌文档和关于这个主题的线索,我可以在最近几周内找到,但我没有得到这个认证工作。
我希望在这里的任何人现在可以帮助我摆脱这个令人困惑的谷歌API和图书馆问题。
要使用服务帐户和OAuth时,这是一个公开的任何特殊原因API,你可以使用一个API密钥? – DaImTo
那么API是公开的,但是对于流式用例,我用我的账户支付。在所有文档中,都会告诉您只能通过oauth使用api()。对我而言,使用哪个权威并不重要。你有一个使用api key method的工作解决方案吗? –
Api密钥将识别您的帐户。 Oauth用于访问私人数据。 – DaImTo