Messenger扩展Javascript SDK错误2071011

时间:2016-11-08 15:15:19

标签: javascript facebook facebook-javascript-sdk facebook-messenger

我正在尝试使用Messenger Extensions Javascript SDK创建Messenger Web View(https://developers.facebook.com/docs/messenger-platform/messenger-extension)。

Web View打开的页面具有以下JS代码

<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 = "//connect.facebook.com/en_US/messenger.Extensions.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));

window.extAsyncInit = function () {
    // 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>  

结果是一个警告,其中包含以下消息“Messenger Extension Error:2071011”。所以方法“getUserID”出错了。 “2071011”错误代码是什么意思?以及如何解决?我经常搜索,但没有找到任何关于它的信息。

非常感谢任何帮助!!

PS:指南说要将网址列入白名单,我也是这样做的。

3 个答案:

答案 0 :(得分:3)

我发现&#34; 2071011&#34; messenger.Extensions.js缩小来源中的错误说明:

if (!p) {
    x(2071011, 'JavaScript bridge does not exist - Please make sure you are in latest ' + 'version of Facebook or Messenger App.');
    return;
}

p 值等于 q()

function q() {
    switch (o) {
        case h.ANDROID:
            return window._FBExtensions;
        case h.IOS:
            return window.webkit && window.webkit.messageHandlers;
    }
    return null;

}

可能的错误原因:

  1. 请确保您拥有最新的Messenger App版本(在我的情况下不解决问题)。
  2. Messenger Android应用程序很可能不会将变量 window._FBExtensions 正确包含到WebView上下文中 - 我将此变量设置为undefined, messenger.Extensions.js 假设 _FBExtensions 变量已存在。我目前无法找到解决方法,因为它是Messenger App部分。

答案 1 :(得分:1)

您是如何尝试打开网页浏览的?我遇到了同样的问题但是信使扩展只能在documentation上在iOS和Android上运行。 此代码适用于iOS,并在桌面信使应用程序上引发相同的错误。我希望这会有所帮助。

答案 2 :(得分:0)

MessengerExtensions.getUserID(function success(uids) {
            // triggering on devices
            self.defer.resolve(uids.psid);
        }, function error(err) {
            MessengerExtensions.getContext(config.fbApp.id, function success(result) {
                // triggering on desktop
                self.defer.resolve(result.psid);
            }, function error(result) {
                self.defer.reject(result);
                console.log('Context Error ', result);
            });
        });