我正在使用部署在heroku上的nodejs为messenger平台开发一个聊天机器人。 我试图在webview中获取用户ID。 我已经将messenger扩展字段设置为true,将我的域列入白名单,使用最新的更新版本的Android应用程序,并且从现在webview支持Web浏览器,我也在safari浏览器中查看它。
信使sdk正在装载完美。我检查浏览器是否支持我得到的结果 - > true。 我仍然面临着获取用户ID的问题。 我的代码是:
<script>
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.com/en_US/messenger.Extensions.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));
window.extAsyncInit = function () {
var isSupported = MessengerExtensions.isInExtension();
alert(isSupported);
// the Messenger Extensions JS SDK is done loading
MessengerExtensions.getUserID(function success(uids) {
var psid = uids.psid;
alert(psid);
}, function error(err) {
alert("Messenger Extension Error: " + err);
});
};
</script>
注意:我已经搜索了此问题的解决方案,但没有一个工作,因此我发布了此错误。
答案 0 :(得分:1)
好吧,我再次阅读了文档。 文档说桌面的webview工作,但目前不支持一些注意事项,如getUserIds()。
我找到了两个替代解决方案来解决获得“psid”的问题,第一个很简单,你可能会知道它,因为很多像“2k17 Resolutions”这样的聊天机器人正在使用它。
1.将nodejs app中的“senderid”作为参数添加到webview的url中,然后在页面本身上获取它。 “senderid”和“psid”是相同的。
通过从messenger js sdk调用来获取getContext()中的psid。 getContext()在json中返回4个字段 对象,它是“thread_type”,“tid”,“psid”,“signed_request”,其中psid是我正在寻找的。 以下是完整的工作代码。
discoverServices
以下是Thread上下文文档的链接:https://developers.facebook.com/docs/messenger-platform/webview/context
编辑:两天前,信使几乎没有新的更新,其中一个新的更新使网页视图与所有浏览器兼容,因此现在getContext()正在使用任何浏览器。