我目前正在https://passportjs.org开发Dialogflow策略。
根据我的了解,Dialogflow不会对用户进行身份验证。所以我正在考虑制定一个策略(针对passportjs),以不同的方式识别每个平台的用户(对每个平台分析originalRequest
不同。)
例如,电报originalRequest
有此字段:
originalRequest.data.message.from.id
电报说这个领域是:
“此用户或机器人的唯一标识符”
所以我认为使用它进行身份验证是安全的,并确定我的webhook实现的用户的每个意图。
我想知道google身份验证操作,我找到了originalRequest.data.user.userId
字段。
“用户可以重置此标识符,因此不要存储键入此标识符的重要用户数据,因为一旦重置,用户将无法再访问该信息。”
所以不信任userId的唯一原因是因为它可以被重置?在文档的最后,它说:
用户ID生命周期 - 用户ID会在30天不活动后自动重置,或者如果用户在设备上取消其帐户关联,则会自动重置。
和
“如果设备无法识别注册用户的语音或者没有注册的语音,则使用不同的ID,该ID对于该对话而言是唯一的。”
如何区分用户?可以回收一些ID吗?
答案 0 :(得分:2)
区分用户的最佳方法是使用userId
字段,如您所确定的那样。在AoG平台上,userId
的使用方式有点像可以使用的网络cookie - 如果你再次看到它,你可以确信这是上次使用它的用户。但是如果你看到一个新的,你必须假设你以前从未见过这个用户,即使这意味着他们删除了cookie。
要明确 - 大多数情况下,UserId将保持不变,并且您可以期望返回的用户具有相同的ID。仅在三种情况下,这不会成为现实:
文档中的措辞很差 - 我认为这是为了提醒开发人员用户最终负责他们的隐私。谷歌也强迫你做同样的事情并采取这样做的政策。
ID不会被回收。事实上,他们甚至不会在不同的行动之间重复使用,即使对于同一助理帐户也是如此。
摘要:如果您看到相同的UserId,则可以相信它与您之前看到的用户相同。如果您看到一个新用户,则假设他们是新用户。
如果您想要一种更强大的方法来识别用户,您可以考虑使用帐户链接来控制识别令牌。但这有很大的额外开销。
使用其他身份验证方法时要小心--Google限制了您如何将其作为操作的一部分使用,并在某些情况下明确禁止它们。有关详细信息,请参阅General Policies。