私はKotlinで自分のラズベリーパイのGoogle Assistantを作成しようとしています。私はラズベリーが後でウェブインターフェースを公開し、入力デバイスやグラフィカルインターフェースを持たないので、this IETF draftで提案されたいわゆる "デバイスフロー"を使ってOAuthフローを実装しました。認証されたチャンネルを「未認証」として拒否するGoogle Assistant SDK
Googleはこのフローをサポートしており、私は最後にユーザーの同意を得て有効なアクセストークンを取得します。テスト目的のために、私はまた、通常行われているようにユーザーをlocalhostに転送するだけのデフォルトの認証フローを試しましたが、問題は解決しませんでした。
私はthis toolを使用してアクセストークンをテストし、有効範囲とトークンの有効性を確認しました。トークン自体が機能するはずです。
有効範囲はhttps://www.googleapis.com/auth/assistant-sdk-prototypeと記載されていますhere これは実際には有効なWebリソースを指していませんが、すべてのドキュメントで参照されています。
次に、gRPCが提供するJavaスタブを使用して、オーディオデータをアシスタントのSDKエンドポイントにストリーミングしようとしました。として、第三者を取ったガイドとしてどのようにrpcスタブを認証する。しかし、リファレンス実装と私自身のどちらも動作しません。 (私は「私」のために擬似変数を接頭辞
val observer = authenticatedEmbeddedAssistantStub.converse(myStreamObserverImplementation)
observer.onNext(myConfigConverseRequest)
while(more audio data frames available) {
observer.onNext(myAudioFrameConverseRequest)
}
observer.onCompleted()
:
と、認証要求は、次のように行われる:彼らは両方のスタブがこのように認証され
io.grpc.StatusRuntimeException: UNAUTHENTICATED: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
を報告しますわかりやすく、実際の実装ではより多くのコードで構成できます)。
eこのデモ実装の著者。彼は最後に彼がチェックした(数ヶ月前に)それは完璧に動作していたと私に言った。だから私は最終的にオプションがなくなった。 クライアントの実装は私が作業に使用したリファレンスであり、実際にスタブを認証しています(エラーメッセージは反対ですが)。正しいスコープの有効なトークンがアシスタントAPIに適していませんGoogleの提案)またはAPIサーバーの変更がGoogleによってgetting started articlesに正しく記載されていませんでした。
So:誰も同じ問題を抱えていて、それを修正する方法を知っていましたか?私はgithubのプロジェクトを持っています。したがって、誰かが壊れたソースコードを必要とする場合、私はエラーを生成する一時的なコミットを行うことができます。
改造のためにいくつかの作業を保存することに注意してください。この問題はthisとthisの両方の問題を解決しています。
他の人も、現在これで問題が発生しているようだ:します。https:// cloudplatform https://plus.google.com/114306113999433581153/posts/Rfy4bJ7F8sy彼らは彼らの最近の展開の中で何かが壊れている可能性があります。 googleblog.com/2017/12/OAuth-whitelisting-can-now-control-access-to-GCP-services-and-data.html –