如何授权用户在FB信使的网页,而不login?

我正在build立一个FB信使聊天机器人,节省用户configuration文件数据,食物和卡路里消耗。 我使用Node / Express / MongoDB作为后端,并希望用户能够通过链接在聊天室内打开个人信息板页面。 所以这个URL就像www.myapp.com/:id这样:id是个人密钥。

我的问题是,如何才能只有属于这个网页和数据的用户打开这个,而不必login? 通常情况下,你会去一个网站,login,并能够看到的页面,但这不是我想要在一个聊天机器人的一步。 我希望用户只是打开聊天页面,无论是打开浏览器选项卡还是原生web视图。 任何意见,我怎么能实现这一目标?

要validation页面上的用户是否是您希望将该页面用于的Facebook用户,请将FB Messenger扩展添加到该页面。

当在你的机器人上点击一个web视图时,Messenger扩展将能够告诉他们login的人是谁,并允许你做任何你想要的信息。 在你的情况下,检查用户名是否与你的机器人在URL中传递的用户名相匹配。 有很多方法来检查这个问题,比如分割查询string,但是我坚持在你的问题中使用示例路由。

在仪表板页面上使用以下内容。 下面将和FB一起检查login用户是谁,如果他们跟随的链接的ID不匹配,则拒绝他们访问redirect。

<script> MessengerExtensions.getContext(<YOUR-APP-ID>, function success(thread_context){ // User ID was successfully obtained. var psid = thread_context.psid; // Grab the user id from your url (assumes your url is /<USER_ID>) var loc = window.location.pathname.replace(/^\/|\/$/g, ''); if (psid !=== loc) { window.location.replace("http://YOUR_DOMAIN.com/error") } }, function error(err, errorMessage) { // Error handling code }); </script> 

有关使用Messenger Extensions获取用户ID的文档

试试这个:打开Messenger,然后打开DevsConsole并转到networking选项卡。 现在粘贴你的链接并点击它。 在“networking”选项卡中打开点击发出的请求详细信息。 在“表单数据”下你应该看到这个:

 q:[{"user":<your_fb_id>,... 

您可以使用此ID在您的应用程序中对用户进行身份validation – 只需以某种方式将其与应用程序中的授权用户进行身份validation即可。 这只是我头顶的第一个想法,如果你把它与CORS安全头混合,这应该是相当安全的。