Tag: grpc

Google Assistant SDK拒绝认证频道为“UNAUTHENTICATED”

我正在尝试在Kotlin为我的Raspberry Pi创建一个Google智能助理。 我使用本IETF草案中提出的所谓“设备流程”实现了OAuth流程,因为我的Raspberry稍后将公开一个Web界面,并且没有任何输入设备或图形界面。 谷歌确实支持这个流程(当然),我最终得到用户同意的有效访问令牌。 为了测试的目的,我也尝试了一个默认授权流程,只是将用户转发到本地主机,因为它通常已经完成,但并没有解决问题。 我使用这个工具测试了访问令牌,并确认了范围和令牌的有效性。 所以令牌本身应该工作。 范围是: https : //www.googleapis.com/auth/assistant-sdk-prototype(如此处所述)这实际上并不指向任何有效的Web资源,而是在每个文档中引用。 然后,我尝试使用gRPC提供的Java存根将音频数据流式传输到助理SDK端点。 如第三方参考实现作为指导如何认证rpc存根。 但是这个参考实现和我自己的都不起作用。 他们都报告 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. 存根以这种方式进行validation: embeddedAssistantStub.withCallCredentials( MoreCallCredentials.from(OAuth2Credentials .newBuilder() .setAccessToken( myAccessToken, myAccessTokenExpirationDate)) .build())) 并且认证的请求被执行如下: val observer = authenticatedEmbeddedAssistantStub.converse(myStreamObserverImplementation) observer.onNext(myConfigConverseRequest) while(more audio data frames […]

如何破坏kotlin grpc消息?

我想破坏这样的grpc消息。 message AskOrUpdateQuestionRequest { int64 user_id = 1; int64 product_id = 2; core.model.QuestionProfile question = 3; } message QuestionProfile { int64 id = 1; Question.Status status = 2; Question.Type type = 3; string title = 4; } 我试图破坏这个对象? (grpc消息)在kotlin val (title) = request.question 但是,它失败了一个错误。 解构typesQuestionModelProtos.QuestionProfile的声明初始化器! 必须具有“component1()”function 我怎样才能做到这一点 希望这是有道理的。 解决 :@Alex Filatov的答案帮助我解决了这个问题。

在使用gRPC的应用程序中使用kotlin-script-util(对于JSR-223支持)时,Guava发生冲突

我有一个基于Spring的Web应用程序,它使用gRPC与我的中间层进行通信。 我希望能够为JSR-223脚本引擎使用kotlin-script-util。 因为kotlin-script-util依赖于kotlin编译器依赖(使用Guava),所以我得到了与gRPC依赖关系的版本冲突。 我看到有一个阴影的kotlin-compiler-embeddable jar,但没有kotlin-script-util使用这个依赖关系。 有什么我可以做,使这些依赖关系一起工作? kotlin-script-util:1.1.1 gRPC:1.2.0

kotlin grpc.StreamObserver去rx.PublishSubject

每当我们声明流API时使用GRPC rpc heartBeat(Empty) returns (stream ServiceStatus){} 我们已经为观察者模式StreamObserver简单的接口(这是protobuf会为我们生成的) public interface StreamObserver<V> { void onNext(V var1); void onError(Throwable var1); void onCompleted(); } 现在你想要做的就是将其转换为一个实际的Observable并且只有在它被传递之后才能继续使用。 override fun heartBeat(arg: Empty): Observable<ServiceStatus> { // we create rx java subject val subject = PublishSubject.create<ServiceStatus>() // we create grpc observer and delegate all calls to rx java val observer = object : StreamObserver<ServiceStatus> […]