9

I'm trying to create a Messenger Web View (https://developers.facebook.com/docs/messenger-platform/messenger-extension) by using the Messenger Extensions Javascript SDK.

The page opened by the Web View has the following JS code

<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>  

And the result is an Alert with the following message "Messenger Extension Error: 2071011". So the method "getUserID" goes in error. What "2071011" error code means? And how to solve it? I've searched a lot but nothing has been found about it.

Any help is really appreciated!!

PS: the guide says to whitelist the site of the URL and I've done that too.

dafian
  • 93
  • 1
  • 6

3 Answers3

3

How are you trying to open the webview? I was facing the same issue but then messenger extensions only work on iOS and Android as per the documentation. This code works for me on iOS and throws the same error on desktop messenger app. I hope this helps.

hudibaba
  • 66
  • 6
  • @harpreetSingh : which version of messenger app you are using? Is it iOS or android? Make sure it's latest version. And you can try an alert to check if your JS loads. window.extAsyncInit = function () { alert(""Messenger Extensions JS SDK is done loading"); // 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); }); }; – hudibaba Nov 25 '16 at 04:00
  • I found that its valid bug and facebook team is working on it......here is link https://developers.facebook.com/bugs/1676913532599603/ – harpreetSingh Nov 25 '16 at 04:08
  • Yes, I saw the bug. Its working fine for me and I am able to get the user details :) – hudibaba Nov 25 '16 at 04:19
  • What do you mean by in website? It works on iOS and Android messenger with the latest version but it doesn't work on my desktop. – hudibaba Mar 28 '18 at 11:21
3

I found "2071011" error explanation in messenger.Extensions.js minified source:

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

p value equals q():

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

}

Possible error causes:

  1. Please ensure you have the newest Messenger App version (do not resolve problem in my case).
  2. It is highly possible that Messenger Android app do not include variable window._FBExtensions into WebView context properly - I have this variable undefined and messenger.Extensions.js assumes that _FBExtensions variable already exists. I can't found currently workaround for this as it is Messenger App part.
temasso
  • 1,104
  • 8
  • 6
  • window._FBExtensions adding this variable will make it work? I tried but not working. What should be the value of the variable? @temasso – Gijo Varghese Aug 04 '17 at 04:20
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);
            });
        });