如何在不登录的情况下授权用户访问 FB Messenger 中的网页?
How to authorise user for a web page in FB messenger, without logging in?
我正在 FB Messenger 中构建一个聊天机器人,用于保存用户个人资料数据、食物和卡路里消耗。我正在使用 Node/Express/MongoDB 作为后端,并希望用户能够使用 link 在聊天中打开个人仪表板页面。因此 URL 类似于 www.myapp.com/:id 其中 :id 是个人密钥。
我遇到的问题是只有属于该页面和数据的用户才能在不登录的情况下打开它?通常你会去一个网站,登录并能够看到页面,但这不是我想要的聊天机器人的步骤。我希望用户只需在聊天中打开页面,无论是打开浏览器选项卡还是本机 webview。关于如何实现这一点有什么建议吗?
试试这个:
打开 Messenger,然后打开 DevsConsole 并转到“网络”选项卡。现在粘贴您的 link 并单击它。在网络选项卡中打开点击发出的请求详细信息。在 "Form Data" 下你应该看到这个:
q:[{"user":<your_fb_id>,...
您可以使用此 ID 对您应用中的用户进行身份验证 - 只需以某种方式将其与您应用中的授权用户耦合即可。这只是我脑海中的第一个想法,如果你混合它应该是相当安全的,例如具有 CORS 安全性 headers.
要验证页面上的用户是否是您希望该页面面向的 Facebook 用户,请将 FB Messenger Extensions 添加到页面。
当您在您的 bot 中点击一个 webview 时,Messenger 扩展程序将能够告诉您他们是以谁的身份登录的,并允许您使用该信息做任何您想做的事情。在您的情况下,检查用户 ID 是否与您的机器人在 url 中传递的用户 ID 匹配。有很多方法可以检查这一点,比如拆分查询字符串,但我坚持使用你问题中的示例路由。
在您的仪表板页面上使用以下内容。下面将检查 FB 登录用户是谁,如果它与他们关注的 link 的 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>
上的文档
我正在 FB Messenger 中构建一个聊天机器人,用于保存用户个人资料数据、食物和卡路里消耗。我正在使用 Node/Express/MongoDB 作为后端,并希望用户能够使用 link 在聊天中打开个人仪表板页面。因此 URL 类似于 www.myapp.com/:id 其中 :id 是个人密钥。
我遇到的问题是只有属于该页面和数据的用户才能在不登录的情况下打开它?通常你会去一个网站,登录并能够看到页面,但这不是我想要的聊天机器人的步骤。我希望用户只需在聊天中打开页面,无论是打开浏览器选项卡还是本机 webview。关于如何实现这一点有什么建议吗?
试试这个: 打开 Messenger,然后打开 DevsConsole 并转到“网络”选项卡。现在粘贴您的 link 并单击它。在网络选项卡中打开点击发出的请求详细信息。在 "Form Data" 下你应该看到这个:
q:[{"user":<your_fb_id>,...
您可以使用此 ID 对您应用中的用户进行身份验证 - 只需以某种方式将其与您应用中的授权用户耦合即可。这只是我脑海中的第一个想法,如果你混合它应该是相当安全的,例如具有 CORS 安全性 headers.
要验证页面上的用户是否是您希望该页面面向的 Facebook 用户,请将 FB Messenger Extensions 添加到页面。
当您在您的 bot 中点击一个 webview 时,Messenger 扩展程序将能够告诉您他们是以谁的身份登录的,并允许您使用该信息做任何您想做的事情。在您的情况下,检查用户 ID 是否与您的机器人在 url 中传递的用户 ID 匹配。有很多方法可以检查这一点,比如拆分查询字符串,但我坚持使用你问题中的示例路由。
在您的仪表板页面上使用以下内容。下面将检查 FB 登录用户是谁,如果它与他们关注的 link 的 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>
上的文档