0

我正在使用部署在heroku上的nodejs爲messenger平臺開發chatbot。 我想在web視圖中獲取用戶標識。 我已將messenger擴展字段設置爲true,將我的域名列入白名單,使用最新更新版本的android應用程序,並且自從現在webview支持Web瀏覽器以外,我還在safari瀏覽器中查看它。Facebook Messenger擴展錯誤:2071010

信使sdk加載完美。我檢查瀏覽器是否被支持,或者我沒有得到result-> 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> 

注:我已經尋找這個問題的解決方案,但他們沒有工作,所以我張貼這種錯誤。

回答

1

那麼,我再次閱讀文檔。 該文檔說,桌面的webview工作,但目前不支持一些警告,如getUserIds()。

我發現了兩個替代解決方案來解決獲得「psid」的問題,第一個解決方案很簡單,您可能會知道很多chatbots,如「2k17 Resolutions」正在使用它。

1.在您的nodejs應用中添加「senderid」作爲參數到webview的url,然後在頁面本身獲取它。 「senderid」和「psid」是一樣的。

  1. 通過從messenger js sdk調用它從getContext()獲取psid。 getContext()在json 對象中返回4字段,它們是「thread_type」,「tid」,「psid」,「signed_request」,其中psid是我正在查找的對象。 以下是完整的工作代碼。

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

這裏是鏈接線程上下文文檔:https://developers.facebook.com/docs/messenger-platform/webview/context

編輯:兩天回來報信了一些新的更新外面,新更新的一個讓網絡兼容視圖與所有的瀏覽器,因此現在getContext()正在與任何瀏覽器。