Google Actions SDK登录隐式流

时间:2017-11-20 16:21:23

标签: actions-on-google google-assistant-sdk

编辑:在手机助手上,它现在正在运行的问题只存在于谷歌动作模拟器

我只是尝试设置Google Actions SDK帐户使用隐式授权进行链接并尝试在模拟器中对其进行测试。

第一个问题是这在模拟器中是否可能?

  1. 要这样做,我在与该类型链接的操作控制台帐户中添加了 隐含授予我的行动。
  2. 我使用的网址正在使用。
  3. 现在我为我的行动添加了一个注册请求。为了测试,如果我在模拟器中写注册服务器响应:
  4. { conversationToken: JSON.stringify(state), expectUserResponse: true, expectedInputs: [ { inputPrompt: { initialPrompts: [ { textToSpeech: "PLACEHOLDER_FOR_SIGN_IN" } ], noInputPrompts: [] }, possibleIntents: [ { "intent": "actions.intent.SIGN_IN", "inputValueData": {} } ], speechBiasingHints: [] } ] }

    1. 此后服务器没有请求登录页面路由(地址正确!)。它只响应SignIN intent ERROR:
    2. { "isInSandbox'": false, "surface": { "capabilities": [ { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.SCREEN_OUTPUT" } ] }, "inputs": [ { "rawInputs": [ { "query": "i think so", "inputType": "VOICE" } ], "arguments": [ { "name": "SIGN_IN", 'extension': { "@type": "type.googleapis.com/google.actions.v2.SignInValue", "status": "Error" } } ], "intent': "actions.intent.SIGN_IN" } ], "device": { "locale": "en-US" }, "conversation": { "conversationId": "1494606917128", "type": "ACTIVE", "conversationToken": "[\"_actions_on_google_\"]" } }

      为什么呢?问题出在哪儿?我可以在某处看到错误消息吗?

      以下是3到4之间模拟器中发生的事情:

      enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

使用手机应用时是否相同?对我来说,它打开了一个带有我/ auth端点的嵌入式浏览器,模拟器没有这样做。

答案 1 :(得分:0)

很长一段时间后我能够工作。 我们必须首先启用webhook,然后我们可以看到如何在对话框流程实现文档中启用webhook 如果我们要使用Google智能助理,那么我们必须首先在集成中启用Google智能助理集成。 然后按照下面提到的步骤进行谷歌操作中的帐户关联: -

  1. 转到Google云端控制台 - > API和服务 - >凭证 - > OAuth 2.0客户端ID - >网络客户端 - >从那里注意客户端ID,客户端密钥                                      - >下载JSON - 从json记下项目id,auth_uri,token_uri                                      - >授权重定向URI - >白名单我们的应用程序的URL - >在此URL中,固定部分为https://oauth-redirect.googleusercontent.com/r/,并将项目ID附加到URL中                                      - >保存更改

  2. Google上的操作 - >帐户关联设置                     1.授权类型=授权代码                     2.客户信息                                 1.填写客户端ID,客户端secrtet,auth_uri,token_uri                                 2.输入auth uri为https://www.googleapis.com/auth,token_uri为https://www.googleapis.com/token                                 3.保存并运行                                 4.在谷歌助手上运行时会显示错误,但不要担心                                 5.返回助手设置中的帐户关联部分,输入auth_uri作为https://accounts.google.com/o/oauth2/auth                                 和token_uri为https://accounts.google.com/o/oauth2/token                                 6.将范围设为https://www.googleapis.com/auth/userinfo.profilehttps://www.googleapis.com/auth/userinfo.email                                 我们很高兴。                                 7.保存更改。

  3. 在托管服务器日志中,我们可以看到访问令牌值,通过访问令牌,我们可以获取有关电子邮件地址的详细信息。

  4. 将访问令牌附加到此链接“https://www.googleapis.com/oauth2/v1/userinfo?access_token=”,我们可以在生成的json页面中获取所需的详细信息。
  5. accessToken = req.get("originalRequest").get("data").get("user").get("accessToken")
    r = requests.get(link) print("Email Id= " + r.json()["email"]) print("Name= " + r.json()["name"])
  6. P.S。您也可以将授权类型用作Implicit,而不是Authorisation code