我正在開發一個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