【问题标题】:Google Assistant SDK refusing authenticated channel as "UNAUTHENTICATED"Google Assistant SDK 拒绝认证频道为“未认证”
【发布时间】:2017-12-07 15:45:08
【问题描述】:

我正在尝试在 Kotlin 中为我的 Raspberry Pi 创建一个 Google 助理。我使用this IETF draft 中提出的所谓“设备流”实现了 OAuth 流,因为我的 Raspberry 稍后将只公开一个 Web 界面并且没有任何输入设备或图形界面。

Google 确实支持此流程(当然),我最终在用户同意的情况下获得了有效的访问令牌。出于测试目的,我还尝试了一个默认授权流程,它只会将用户转发到 localhost,因为它通常是这样做的,但它并没有解决问题。

我使用this tool 测试了访问令牌,它确认了范围和令牌的有效性。所以令牌本身应该可以工作。

范围是:https://www.googleapis.com/auth/assistant-sdk-prototype 记录在案的here 这实际上并不指向任何有效的网络资源,而是在每个文档中都有引用。

然后我尝试使用 gRPC 提供的 java 存根将音频数据流式传输到助手 SDK 端点。以第三方reference implementation 为指导如何验证 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.

存根通过这种方式进行身份验证:

embeddedAssistantStub.withCallCredentials(
            MoreCallCredentials.from(OAuth2Credentials
                    .newBuilder()
                    .setAccessToken(
                            myAccessToken,
                            myAccessTokenExpirationDate))
                    .build()))

经过身份验证的请求是这样执行的:

val observer = authenticatedEmbeddedAssistantStub.converse(myStreamObserverImplementation)
observer.onNext(myConfigConverseRequest)
while(more audio data frames available) {
    observer.onNext(myAudioFrameConverseRequest)
}
observer.onCompleted()

(为了清楚起见,我在伪变量前面加上了“my”,它们在实际实现中可以包含更多代码。)

我什至联系了这个演示实现的作者。他告诉我,上次他检查时(几个月前)它工作得很好。所以我终于没有选择了。 由于我作为参考的客户端实现曾经工作并且我确实验证了存根(尽管错误消息表明相反)可能,我的具有正确范围的有效访问令牌不适合为助手 API 选择(尽管我遵循了google 的建议)或 API 服务器的更改未正确记录在 google 的 getting started articles 中。

那么:有没有人遇到过同样的问题并知道如何解决?我在 github 上有这个项目。因此,如果有人需要损坏的源代码,我可以做一个临时提交来产生错误。

注意,为模组保存一些作品:此问题涉及thisthis 问题,两者均未解决且使用不同的语言但描述了类似的问题。

【问题讨论】:

标签: oauth kotlin grpc google-assistant-sdk


【解决方案1】:

好吧,我的第二个假设似乎是对的:错误是服务器端的。这是github问题,让我们等待修复。

https://github.com/googlesamples/assistant-sdk-python/issues/138

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2014-06-11
    • 2015-09-05
    • 2017-10-25
    相关资源
    最近更新 更多