Google模拟器中“操作”中的帐户链接重定向

时间:2019-02-20 01:06:37

标签: oauth-2.0 actions-on-google alexa-skills-kit account-linking

我正在使用the new Action on Google Java API构建一个应用程序。据我从处理Alexa中的帐户链接了解到的那样,初始流程(当JSON请求中的 userId null 时)应重定向到登录表单以征得用户同意:

    @ForIntent("RawText")
    public ActionResponse launchRequestHandler(ActionRequest request) {

       String userId = request.getAppRequest().getUser().getUserId();
       String queryText = request.getWebhookRequest().getQueryResult().getQueryText();

       String speech = null;

            ResponseBuilder responseBuilder = getResponseBuilder(request);

            if (isBlank(userId) || GREETING.equalsIgnoreCase(queryText)) {

                speech = "I've sent a link to your Google Assistant app that will get you started and set up in just several simple steps.";

                responseBuilder.add(
                    new SignIn()
                        .setContext(speech));
                //...
                return responseBuilder.build();

但是,在AoG模拟器中进行测试时,我没有看到任何重定向。我看到以下错误:

enter image description here

我的帐户链接设置:

enter image description here

其中授权URL重定向到本地模拟身份验证服务,该服务应显示登录表单。它可以访问(通过localhost反向代理提供的serveo.net和ssh隧道)。为什么Google不将我重定向到那里?

有人可以指导我如何在帐户链接流程中进行初始握手,我在哪里可以看到应该从Web挂钩发送的登录意图触发的表单?

我宁愿不使用手机,因为该错误消息似乎暗示,因为我在AoG模拟器中测试的帐户与手机上的用户ID不同。

使用Simulator as a Speaker是什么意思?我的设置中缺少什么?

是否还有另一个类似于Alexa's simulator的Google应用可以更好地模拟物理设备?

1 个答案:

答案 0 :(得分:1)

通常,您可以模拟帐户链接,方法是选择“调试”选项卡,然后在其中找到一个url,然后将其复制粘贴到另一个选项卡上,然后可以链接您的帐户。 链接完成后,转到模拟器并输入“取消”或“停止”,然后输入“与语音库通话”。

!不要按“重置”或“更改版本”,否则您必须重新链接您的应用

但是,最近Google从调试选项卡中删除了该网址,我在任何地方都找不到它...

Simulator as a Speaker,“表面下拉列表”设置为“电话”,您需要select Speaker

但是尝试该操作时,您会收到此错误...

Invocation Error
You cannot use standard Google Assistant features in the Simulator. If you want to try them, use Google Assistant on your phone or other compatible devices. 

因此,目前您无法使用模拟器测试需要帐户关联的操作。您可以使用智能手机来做...

更新2019-03-05:

Google已在模拟器中添加了帐户链接,现在更易于测试。 enter image description here