【问题标题】:Facebook Messenger Extension Error: 2071010Facebook Messenger 扩展错误:2071010
【发布时间】:2017-08-26 12:51:29
【问题描述】:

我正在使用部署在 heroku 上的 nodejs 为信使平台开发一个聊天机器人。 我正在尝试在 webview 中获取用户 ID。 我已将 messenger 扩展字段设置为 true,将我的域列入白名单,使用最新更新版本的 android 应用程序,而且由于现在 webview 支持 web 浏览器,我也在 safari 浏览器中查看它。

Messenger sdk 正在完美加载。我检查是否支持浏览器,我得到结果-> 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>

注意:我已经搜索了这个问题的解决方案,但它们都不起作用,因此我发布了这个错误。

【问题讨论】:

    标签: node.js facebook-graph-api heroku facebook-javascript-sdk facebook-chatbot


    【解决方案1】:

    好吧,我再次阅读了文档。 文档说桌面的 webview 可以工作,但目前不支持一些警告,如 getUserIds()。

    我找到了两个替代解决方案来解决获取“psid”的问题,第一个很简单,您可能知道它,因为许多聊天机器人(如“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

    编辑:两天前,messenger 获得了一些新更新,其中一个新更新使 web 视图与所有浏览器兼容,因此现在 getContext() 可以与任何浏览器一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多