【发布时间】:2018-06-10 19:53:11
【问题描述】:
我希望找出以下场景的最佳做法。我是一个相对较新/业余爱好的程序员。我正在开发一个使用 Dialogflow 的聊天机器人。我希望用户能够使用不同的消息传递应用程序来访问支持数据库中的数据和信息,但我希望用户经过身份验证(我需要知道他们是谁才能查询相关数据)。我还有一个网站,用户可以在其中创建帐户并登录。
我已经创建了网站,所有的 OAuth 连接都工作正常。我正在存储有关创建帐户的信息以跟踪用户。
我卡住的地方是,我希望能够在消息传递平台上对用户进行身份验证,以链接到他们在我的数据库中的帐户(令牌/某种简单的个人资料标识符)。
我正在寻找有关 OAuth 流程和路由的建议。我正在使用快递。我们以 Google Account Linking 为例:
一种创建/访问帐户的方法:
网站 -> 注册/登录 -> 发送给 Google -> 确认身份 -> 返回回调(在网站的受保护区域内)。
另一种访问帐户的方式:
DialogFlow 聊天 -> 发送到 webhook(我希望这条路由受到保护) -> 验证/识别用户 -> 查询数据 -> 将信息返回到用户的设备。此流程需要访问与网站流程相同的流程。正如我现在所拥有的,我的回调总是指回我网站内的内部页面。但我想如果用户试图通过 Google 助理访问信息,我不希望这样。
最好/更好的做法是:
- 通过路由条件语句处理不同的流?
- 使用相同的帐户逻辑(我使用的是 passport.js)设置不同的路由端点但指定不同的回调 url?
- 用不同的url注册不同的API凭证来处理不同的访问方式?
- 您如何处理来自消息应用程序内部的回调?
在我的新手自我中,我是否过于复杂化了,是否有更简单、更优雅的解决方案?谢谢!
【问题讨论】:
标签: express authentication oauth-2.0 routing passport.js