我正在 FB Messenger 中构建一个聊天机器人,用于保存用户个人资料数据、食物和卡路里消耗。我在后端使用 Node/Express/MongoDB,并希望用户能够使用链接在聊天中打开个人仪表板页面。因此该 URL 类似于 www.myapp.com/:id,其中 :id 是个人 key 。
我遇到的问题是只有属于该页面和数据的用户才能在不登录的情况下打开它?通常你会去一个网站,登录并能够看到页面,但这不是我想要的聊天机器人的步骤。我希望用户只需在聊天中打开页面,无论是打开浏览器选项卡还是 native webview。关于如何实现这一点有什么建议吗?
最佳答案
要验证页面上的用户是否是您希望该页面用于的 facebook 用户,请添加 FB Messenger Extensions到页面。
当您在您的 bot 中点击一个 webview 时,Messenger 扩展程序将能够告诉您他们是以谁的身份登录的,并允许您使用该信息做任何您想做的事情。在您的情况下,检查用户 ID 是否与您的漫游器在 url 中传递的用户 ID 匹配。有很多方法可以检查这一点,例如拆分查询字符串,但我坚持使用您问题中的示例路由。
在您的仪表板页面上使用以下内容。下面将检查 FB 登录用户是谁,如果它与他们所访问的链接的 ID 不匹配,则通过重定向拒绝他们访问。
<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>
关于javascript - 如何在不登录的情况下授权用户访问 FB Messenger 中的网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875014/