Actions on google Google home在请求用户登录前检查登录状态

Actions on google Google home在请求用户登录前检查登录状态,actions-on-google,google-home,Actions On Google,Google Home,我一直在谷歌主页上开发行动。当实现helper意图访问用户名并通过电子邮件发送所有实现的内容时,请登录helper意图。现在,如何检查用户是否已登录而不要求登录 const {SignIn} = require('actions-on-google'); module.exports = { 'ask_for_sign_in': (conv) => { conv.ask(new SignIn()); }, 'ask_for_sign_in_confirmation

我一直在谷歌主页上开发行动。当实现helper意图访问用户名并通过电子邮件发送所有实现的内容时,请登录helper意图。现在,如何检查用户是否已登录而不要求登录

const {SignIn} = require('actions-on-google');

module.exports = {

  'ask_for_sign_in': (conv) => {
    conv.ask(new SignIn());
  },

  'ask_for_sign_in_confirmation': (conv, params, signin) => {
    if (signin.status !== 'OK') {
      return conv.ask('You need to sign in before using the app.');
    }
    // const access = conv.user.access.token;
    // possibly do something with access token
    return conv.ask('Great! Thanks for signing in.');
  },
};
这里

将触发登录助手意图。如何在要求再次登录之前检查用户是否已登录。我有同样的问题要问你

权限助手意图


如何检查用户是否已授予权限,而不是在用户每次调用操作时都请求权限。

这取决于您使用的是哪个登录后端,但对于所有后续请求(在本次会话和下一次会话中),以下两个请求之一将为真:

  • 如果您正在使用自己的OAuth服务器,那么您将收到一个身份验证令牌,您可以在
    conv.user.access.token
    中接收该令牌。您可以使用OAuth服务器的过程来验证它,并基于此令牌确定用户

  • 如果您正在使用Google登录助手,那么您将在
    conv.user.profile.token
    中收到一个id令牌,并在
    conv.user.profile.payload
    中收到用户的配置文件信息(包括他们的Google id)


权限的情况并非如此。每次都需要请求名称和位置的权限。但是,如果您使用他们的名称,您可以将其存储在
userStorage
中,并在将来保留。但是,如果他们在移动设备上应答,位置可能会发生变化,因此您每次都需要请求此信息。

谢谢您的详细解释。我同意你建议的第一个选择。我使用了自己的OAuth服务器,并根据conv.user.access.token识别了用户。你们知道如何测试吗?每次成功链接后,后续的登录呼叫都会立即返回OK和accessToken。如何重置用户id或帐户链接状态?我正在使用我自己的隐式oauth链接。@BelaVizy-这是一个好问题,但最好在StackOverflow上作为一个单独的问题提问,您可以深入了解您正在做的事情的细节,我们可以提供清晰的答案。好的,在单独的问题中发布它。
conv.ask(new SignIn());