问题
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.
回答1:
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.
回答2:
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:
- Please ensure you have the newest Messenger App version (do not resolve problem in my case).
- 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.
回答3:
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);
});
});
来源:https://stackoverflow.com/questions/40490441/messenger-extensions-javascript-sdk-error-2071011