Google Actions SDK 登录隐式流程
Google Actions SDK Sign-In implicit flow
编辑:在 phone 助手上它现在工作的问题只存在于 google 动作模拟器
我只是尝试设置 Google Actions SDK 帐户与隐式授权的链接,并尝试在模拟器中对其进行测试。
第一个问题这在模拟器中是否可行?
- 为此,我在操作控制台帐户中添加了链接类型
隐含地授予我的行动。
- 我用的url可以用
- 现在我在我的操作中添加了一个注册请求。为了进行测试,如果我在模拟器中编写注册,服务器响应为:
{
conversationToken: JSON.stringify(state),
expectUserResponse: true,
expectedInputs: [
{
inputPrompt: {
initialPrompts: [
{
textToSpeech: "PLACEHOLDER_FOR_SIGN_IN"
}
],
noInputPrompts: []
},
possibleIntents: [
{
"intent": "actions.intent.SIGN_IN",
"inputValueData": {}
}
],
speechBiasingHints: []
}
]
}
- 此后服务器没有请求登录页面路由(地址正确!)。它只是响应 SignIN intent ERROR :
{
"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 之间发生的情况:
使用 phone 应用程序时是否相同?对我来说,它会打开一个带有我的 /auth 端点的嵌入式浏览器,而模拟器不会这样做。
经过很长一段时间后,我能够做到 WORKING。
我们必须先启用 webhook,我们可以在对话流程实现文档中看到如何启用 webhook
如果我们要使用 Google 助手,那么我们必须先在集成中启用 Google 助手集成。
然后按照下面提到的步骤在 google:-
上的操作中进行帐户链接
转到 google 云控制台 -> API 和服务 -> 凭据 -> OAuth 2.0 客户端 ID -> Web 客户端 -> 从那里记下客户端 ID、客户端密码
-> 下载 JSON - 来自 json 记下项目 ID,auth_uri,token_uri
-> 授权重定向 URIs -> 将我们应用程序的 URL 列入白名单 -> 在这个 URL 固定部分是 https://oauth-redirect.googleusercontent.com/r/ 并在 URL 中附加项目 ID
-> 保存更改
在 Google 上的操作 -> 帐户 link 设置
1.授权类型=授权码
2.客户信息
1. 填写client id,client secrtet, auth_uri, token_uri
2. 输入身份验证 uri 作为 https://www.googleapis.com/auth and token_uri as https://www.googleapis.com/token
3.保存并运行
4.在google助手上运行ning会报错,不用担心
5. 返回助手设置中的帐户 linking 部分并输入 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.profile and https://www.googleapis.com/auth/userinfo.email
我们很高兴去。
7. 保存更改。
在托管服务器日志中,我们可以看到访问令牌值,通过访问令牌,我们可以获得有关电子邮件地址的详细信息。
- 将访问令牌附加到此 link“https://www.googleapis.com/oauth2/v1/userinfo?access_token=”,我们可以在生成的 json 页面中获得所需的详细信息。
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"])
P.S。您也可以将授权类型用作 Implicit
而不是 Authorisation code
.
编辑:在 phone 助手上它现在工作的问题只存在于 google 动作模拟器
我只是尝试设置 Google Actions SDK 帐户与隐式授权的链接,并尝试在模拟器中对其进行测试。
第一个问题这在模拟器中是否可行?
- 为此,我在操作控制台帐户中添加了链接类型 隐含地授予我的行动。
- 我用的url可以用
- 现在我在我的操作中添加了一个注册请求。为了进行测试,如果我在模拟器中编写注册,服务器响应为:
{
conversationToken: JSON.stringify(state),
expectUserResponse: true,
expectedInputs: [
{
inputPrompt: {
initialPrompts: [
{
textToSpeech: "PLACEHOLDER_FOR_SIGN_IN"
}
],
noInputPrompts: []
},
possibleIntents: [
{
"intent": "actions.intent.SIGN_IN",
"inputValueData": {}
}
],
speechBiasingHints: []
}
]
}
- 此后服务器没有请求登录页面路由(地址正确!)。它只是响应 SignIN intent ERROR :
{
"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 之间发生的情况:
使用 phone 应用程序时是否相同?对我来说,它会打开一个带有我的 /auth 端点的嵌入式浏览器,而模拟器不会这样做。
经过很长一段时间后,我能够做到 WORKING。 我们必须先启用 webhook,我们可以在对话流程实现文档中看到如何启用 webhook 如果我们要使用 Google 助手,那么我们必须先在集成中启用 Google 助手集成。 然后按照下面提到的步骤在 google:-
上的操作中进行帐户链接转到 google 云控制台 -> API 和服务 -> 凭据 -> OAuth 2.0 客户端 ID -> Web 客户端 -> 从那里记下客户端 ID、客户端密码 -> 下载 JSON - 来自 json 记下项目 ID,auth_uri,token_uri -> 授权重定向 URIs -> 将我们应用程序的 URL 列入白名单 -> 在这个 URL 固定部分是 https://oauth-redirect.googleusercontent.com/r/ 并在 URL 中附加项目 ID -> 保存更改
在 Google 上的操作 -> 帐户 link 设置 1.授权类型=授权码 2.客户信息 1. 填写client id,client secrtet, auth_uri, token_uri 2. 输入身份验证 uri 作为 https://www.googleapis.com/auth and token_uri as https://www.googleapis.com/token 3.保存并运行 4.在google助手上运行ning会报错,不用担心 5. 返回助手设置中的帐户 linking 部分并输入 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.profile and https://www.googleapis.com/auth/userinfo.email 我们很高兴去。 7. 保存更改。
在托管服务器日志中,我们可以看到访问令牌值,通过访问令牌,我们可以获得有关电子邮件地址的详细信息。
- 将访问令牌附加到此 link“https://www.googleapis.com/oauth2/v1/userinfo?access_token=”,我们可以在生成的 json 页面中获得所需的详细信息。
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"])
P.S。您也可以将授权类型用作 Implicit
而不是 Authorisation code
.