我正在开发一个Android应用程序,目前使用Google Speech通过Google云端流Speech API发送文本,但是我无法让身份验证工作。
我想使用OAuth2和来自Google服务帐户的authkey.json在Google Cloud API上进行身份验证。
我使用包SpeechGrpc.SpeechStub
中的google.cloud.speech.v1beta1
类来调用RPC方法。这需要构造函数中的ManagedChannel
,通过它与API进行通信。
我找到了一个示例,说明如何在ManagedChannel
创建GoogleCrendential
:GoogleCloudPlatform/java-docs-samples
直到拦截通道中的凭据一直有效。 ClientAuthInterceptor
类(在示例中用于拦截通道中的凭据)是
com.google.auth.Credentials
作为参数,GoogleCredential
继承自com.google.api.client.auth.oauth2.Credential
。接下来尝试: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部分所示。
由于SpeechGrpc.SpeechStub
类(用于调用rpc方法)需要ManagedChannel
才能运行,因此我的选项用完了。
另一个选项可能是通过方法将凭据添加到SpeechGrpc.SpeechStub
而不是ManagedChannel
SpeechGrpc.newStub(channel).withCallCredentials(CallCredentials creds)
如果可以,我想知道如何从服务帐户的CallCredentials
文件中创建authkey.json
。
我仔细阅读了我在过去几周内可以找到的关于此主题的每个示例,Google文档和主题,但我没有使用此身份验证。
我希望现在有人可以帮助我解决这个令人困惑的谷歌api和图书馆问题。
答案 0 :(得分:0)
您好,您只需在代码启动前添加一行。在google-doc-sample案例中,将它添加到main()方法的第一行。
GoogleCredentials.fromStream(new FileInputStream());
另外,请参阅此链接。 https://github.com/google/google-auth-library-java
在0.6.0发布后,谷歌在此下移动了他们的身份验证:
google-auth-library-oauth2-http