actions-on-google - 在要求用户登录之前,Google Home 检查登录状态
问题描述
我一直在 google home 上开发动作。在实现帮助者意图以访问用户名和电子邮件时,所有这些都实现了登录帮助者意图。现在如何在不要求登录的情况下检查用户是否已经登录。
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());
将触发登录助手意图。如何在再次要求登录之前检查用户是否已经登录。我有同样的问题
权限助手意图
不是每次用户调用操作时都询问权限,而是如何检查用户是否已经授予权限。
解决方案
这取决于您使用的是哪个登录后端,但对于所有后续请求(在此会话和下一个会话中),以下两个请求之一将为 true:
如果您使用自己的 OAuth 服务器,那么您将收到一个身份验证令牌,您可以在
conv.user.access.token
. 您可以使用 OAuth 服务器的过程对其进行验证并根据此令牌确定用户。如果您为 Google 助理使用 Google 登录,那么您将在 中收到一个 id 令牌 (in
conv.user.profile.token
) 和用户的个人资料信息(包括他们的 Google ID)conv.user.profile.payload
。
权限也不一样。您每次都需要请求名称和位置的权限。但是,如果您使用他们的名称,则可以将其存储在userStorage
其中,并且将来会保留。但是,如果他们在移动设备上接听电话,位置可能会发生变化,因此您每次都需要提出此要求。
推荐阅读
- python - sympy 错误“符号”对象不可调用
- javascript - React-Spring Parallax 不能用状态映射函数声明偏移量
- google-apps-script - JIVE API GET 请求为值返回 null
- c - 为什么 strcpy_s 比 strcpy 更安全?
- reactjs - Redux Saga 很好的例子
- navigation - 什么是 mitmproxy 控制台导航键?还是控件、键绑定或键盘快捷键?
- javascript - 表单:在表单下方单击后显示条目
- python - 在 jupyter 笔记本中打开 csv 文件
- c++ - 在 Vulkan 1.1 中使用 VK_EXT_full_screen_exclusive 独占全屏?
- android - 从两个片段在列表视图中添加新项目