0

Ich entwickle einen Chatbot für Messenger-Plattform mit Nodejs auf Heroku bereitgestellt. Ich versuche, die Benutzer-ID in der Webansicht zu erhalten. Ich habe das Messenger-Extension-Feld auf "True" gesetzt, meine Domain auf die Whitelist gesetzt, die neueste aktualisierte Version der Android-App verwendet und seitdem Webview den Webbrowser unterstützt, sehe ich es auch im Safari-Browser.Facebook Messenger Extension Fehler: 2071010

Der Messenger SDK lädt perfekt. Ich überprüfe ob Browser unterstützt wird oder nicht was ich als Ergebnis bekomme-> true. Ich habe immer noch Probleme mit der Benutzer-ID. Mein Code ist:

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

HINWEIS: Ich habe die Lösung für dieses Problem gesucht, aber keiner von ihnen arbeiten, daher bin ich diesen Fehler posten.

Antwort

1

Nun, ich lese die Dokumentation noch einmal. Die Dokumentation besagt, dass das Webview für den Desktop funktioniert, aber derzeit keine Vorbehalte wie getUserIds() unterstützt.

Ich fand zwei alternative Lösung, um das Problem zu bekommen, die "psid" zu bekommen, die erste ist einfach und Sie könnten darüber wissen, wie viele Chatbots wie "2k17 Resolutionen" es verwenden.

1. Fügen Sie die "senderid" in Ihrer Nodejs App als Parameter für die URL Ihrer Webansicht hinzu und holen Sie sie dann auf der Seite selbst. Die "Senderid" und "Psid" sind gleich.

  1. Das psid aus dem getContext() holen, indem es von Messenger js sdk aufgerufen wird. Das getContext() liefert 4 Feld in JSON Objekt, die "Thread_Typ", "Tid", "Psid", "Signed_request", wo Psid ist, was ich gesucht habe. Unten ist der vollständige Arbeitscode.

    <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.getContext('YOU_APP_ID', 
          function success(result){ 
          alert("Success: "+result.psid); 
          }, 
          function error(result){ 
          alert(JSON.stringify(result)); 
          } 
         ); 
        }; 
    </script> 
    

Und hier ist der Link für Thread-Kontext Dokumentation: https://developers.facebook.com/docs/messenger-platform/webview/context

EDIT: Zwei Tage zurück der Bote, aus denen einige neue Updates erhalten, einen der neuen Update machen die Web-Ansicht kompatibel Mit allen Browsern funktioniert getContext() jetzt mit jedem Browser.