gpt4 book ai didi

c# - 成功链接帐户后,Google 操作不提供 user.profile.payload 对象

转载 作者:行者123 更新时间:2023-11-30 15:51:35 25 4
gpt4 key购买 nike

我按照本指南在我的应用中创建帐户链接 https://developers.google.com/actions/identity/google-sign-in#json

我能够验证用户的 jwt 解码器并发回用户已获得授权的响应。然后,根据指南,在下一个请求中,我应该获取用户的配置文件负载(json 结构中的 user.profile.payload),但下一个请求中缺少它。不仅如此,我再次获得了用于jwt验证的tokenId。我认为我在这里想念的是 possibleIntent 对象,但我不确定,因为我没有看到任何文档,因为我使用的是 asp.net 服务器。有仅针对 java 和 nodeJS 的文档的 SDK

这是为登录提供的包含tokenId的请求

{
"user": {
"locale": "en-US",
"lastSeen": "2019-07-11T14:18:10Z",
"idToken": "<tokenId>",
"userVerificationStatus": "VERIFIED"
},
"conversation": {
"conversationId": "ABwppHH9uZfcKj6pS6A6wItKC1dOXuZJ5oFYt2Og7cqrElSQYC9bv-aV7iQ5FDYaJPp-fa7tQNhc2yS0fw3QBu-M",
"type": "ACTIVE",
"conversationToken": "e0e78f40-a207-49c2-9050-50c6ed526c24"
},
"inputs": [
{
"intent": "actions.intent.SIGN_IN",
"rawInputs": [
{
"inputType": "KEYBOARD"
}
],
"arguments": [
{
"name": "SIGN_IN",
"extension": {
"@type": "type.googleapis.com/google.actions.v2.SignInValue",
"status": "OK"
}
},
{
"name": "text"
}
]
}
],
"surface": {
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.ACCOUNT_LINKING"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
},
{
"name": "actions.capability.MEDIA_RESPONSE_AUDIO"
},
{
"name": "actions.capability.WEB_BROWSER"
}
]
},
"isInSandbox": true,
"requestType": "SIMULATOR"
}

这是我在验证用户后提供的响应。我尝试了两个意图 act​​ions.intent.TEXT 和 actions.intent.SIGN_IN 但没有成功。下一个请求再次提供 user.idToken 属性而不是 user.profile(应该包含有效负载)

{
"conversationToken": "b09d915e-6df9-496d-acde-b76858cd95b4",
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Hi",
"displayText": "Hi"
}
}
],
"suggestions": []
}
},
"possibleIntents": [
{
"intent": "actions.intent.TEXT",
"inputValueData": {
"@type": "type.googleapis.com/google.actions.v2.SignInValue",
"status": "OK"
}
}
]
}
]
}

最佳答案

您所说的 user.profile 属性是通过 actions-on-google 库为 JavaScript 提供的。它不在您将收到的 JSON 中。但是……

您不需要它,因为基本个人资料信息(姓名、电子邮件和 Google ID)已编码在 user.idToken 中。该字符串将针对每个请求发送给您,它只是一个您可以验证和解码的 JWT token 。配置文件将位于“有效负载”部分。

我不懂c#,但是https://jwt.io/包含可以为您解码 JWT 字符串的库列表,以便您可以读取“有效负载”。

请记住,您不需要每次都验证 token (尽管如果您做对了,这应该不会很昂贵),但是您可以解码 以获取您正在寻找的信息。

如果你不想解码,你可以在第一次验证的时候解码,得到你需要的信息,然后把这些信息存储在userStorage字符串中(假设你不期望它会改变)。

关于c# - 成功链接帐户后,Google 操作不提供 user.profile.payload 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56991514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com