在Google助手中登录时出错

时间:2018-06-21 06:45:27

标签: actions-on-google dialogflow

我正在使用“用于助手的Google登录”进行帐户关联,并实施“仅Google登录”流程。在用户首次调用某个应用程序(例如:“与我的测试应用程序对话”)时,它可以正常工作,要求获得姓名,个人资料图片,来自Google的电子邮件的许可,并成功获取信息。但是当我第二次调用某个应用程序时,它没有响应并在日志中收到错误: “具有帐户链接的应用程序返回了身份验证错误。正在删除存储的OAuth令牌。” 我不明白这里发生了什么,以下是我用作网络挂钩的代码,

const app = actionssdk({
  debug: true
})

app.intent('actions.intent.MAIN', (conv) => {
  conv.ask(new SignIn('To get your account details'))
  conv.ask('Hello')
})

app.intent('Default Welcome Intent', conv => {
  conv.ask(`Hello test version`)
})

app.intent('actions.intent.SIGN_IN', (conv, input, signin) => {
  if (signin.status === 'OK') {
    const payload = conv.user.profile.payload
    conv.ask(`I got your account details, ${payload.name}. What do you want to do next?`)
  } else {
    conv.ask(`I won't be able to save your data, but what do you want to do next?`)
  }
})

1 个答案:

答案 0 :(得分:0)

您的应用使用户在每次启动您的应用时登录。因此,如果用户是回访用户(第二次),则系统会尝试删除/重新创建有关该用户的配置文件,因为该用户已经登录。因此,您应采用以下方式编写该用户,使其不会陷入登录流程中第二次。

app.intent('welcome', conv => {
     const payload = conv.user.profile.payload;
     if (!paylaod) {
         return conv.ask(new SignIn('to sign in);
     }
     conv.ask('hi! ${payload.given_name}, how are you?')
})

这可能对您有用。