在要求用户登录之前,Google Home会检查登录状态

时间:2018-07-08 15:01:44

标签: actions-on-google google-home

我一直在开发Google主页上的操作。实施帮助程序意图以访问用户名并通过电子邮件发送时,所有实现的这些内容都会登录到帮助程序意图中。现在,如何在不要求登录的情况下检查用户是否已经登录。

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.');
  },
};

这里

conv.ask(new SignIn());

将触发登录帮助器意图。在再次要求登录之前,如何检查用户是否已经登录。我对

有相同的问题
  

权限帮助者意图

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

1 个答案:

答案 0 :(得分:2)

这取决于您使用的是哪个登录后端,但是对于所有后续请求(本次会话和下一个会话),以下两个都是正确的:

  • 如果您使用自己的OAuth服务器,则会收到一个可以在conv.user.access.token中接收到的身份验证令牌。您可以使用OAuth服务器的过程进行验证,并根据此令牌确定用户。

  • 如果您正在使用Google登录助手作为助手,则您将在{中收到一个ID令牌(在conv.user.profile.token中)和该用户的个人资料信息(包括他们的Google ID) {1}}。

权限也不一样。您每次都需要请求名称和位置的许可。但是,如果使用他们的名字,则可以将其存储在conv.user.profile.payload中,以后将保留它。但是,如果他们在移动设备上应答,则位置可能会更改,因此您每次都需要请求。