代码之家  ›  专栏  ›  技术社区  ›  sonlexqt

“发送到Messenger”按钮未显示

  •  0
  • sonlexqt  · 技术社区  · 8 年前

    我想将 send to messenger 按钮集成到我的Web应用程序。问题出现在 localhost environment中,按钮会呈现,但在 staging environment中则不会。(即使两个环境使用相同的 page_id messenger_app_id )

    这是“发送到信使”按钮的代码:

    <div
    class=“FB发送到信使”
    page_id=“568015096933xx”
    messenger_app_id=“402876686862XXX”
    color=“蓝色”
    size=“xlarge”尺寸
    data ref=“123456”
    cta_text=“订阅_更新”></Div>
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   sonlexqt    8 年前

    HTML of rendered button

    import { Meteor } from 'meteor/meteor';
    import React from 'react';
    import { LANGUAGE } from '/imports/constants';
    import { compose, withProps, withHandlers } from 'recompose';
    
    const SendToMessengerEnhancer = compose(
      withProps(() => {
        const user = Meteor.user();
        const language = (user.language === LANGUAGE.EN || user.language === LANGUAGE['EN-US']) ? 'en_US' : 'vi_VN';
        const { appId, pageId } = Meteor.settings.public.facebook;
        const ctaText = 'SUBSCRIBE_TO_UPDATES';
        const color = 'blue';
        const size = 'xlarge';
        return {
          language,
          appId,
          pageId,
          ctaText,
          userId: Meteor.userId(),
          color,
          size,
        };
      }),
      withHandlers({
        createMarkup: ({
          language,
          appId,
          pageId,
          ctaText,
          userId,
          color,
          size,
        }) => () => {
          const originEncoded = encodeURIComponent(Meteor.absoluteUrl());
          const domain = window.location.hostname;
          const channel = `http://staticxx.facebook.com/connect/xd_arbiter/r/xaOI6zd9HW9.js?version=42#cb=fab5aacb255238&domain=${domain}&origin=${originEncoded}f1c42e700a608a4&relation=parent.parent`;
          const channelEncoded = encodeURIComponent(channel);
          const html = `
          <div
            class="fb-send-to-messenger fb_iframe_widget"
            page_id="${pageId}"
            messenger_app_id="${appId}"
            color="${color}"
            size="${size}"
            enforce_login="false"
            data-ref="${userId}"
            cta_text="${ctaText}"
            fb-xfbml-state="rendered"
            fb-iframe-plugin-query="app_id=&amp;color=blue&amp;container_width=532&amp;cta_text=${ctaText}&amp;enforce_login=false&amp;locale=${language}&amp;messenger_app_id=${appId}&amp;page_id=${pageId}&amp;ref=${userId}&amp;sdk=joey&amp;size=${size}">
              <span
                style="vertical-align: bottom; width: 256px; height: 68px;">
                <iframe
                  name="f3769e54c3c93e8"
                  width="1000px"
                  height="1000px"
                  frameborder="0"
                  allowtransparency="true"
                  allowfullscreen="true"
                  scrolling="no"
                  allow="encrypted-media"
                  title="fb:send_to_messenger Facebook Social Plugin"
                  src="https://www.facebook.com/v2.12/plugins/send_to_messenger.php?app_id=&amp;channel=${channelEncoded}&amp;color=${color}&amp;container_width=532&amp;cta_text=${ctaText}&amp;enforce_login=false&amp;locale=${language}&amp;messenger_app_id=${appId}&amp;page_id=${pageId}&amp;ref=${userId}&amp;sdk=joey&amp;size=${size}"
                  style="border: none; visibility: visible; width: 256px; height: 68px;"
                  class=""
                ></iframe>
              </span>
            </div>
          `;
          return {
            __html: html,
          };
        },
      }),
    );
    
    const SendToMessengerView = ({ createMarkup }) => <div className="send-to-messenger-btn" dangerouslySetInnerHTML={createMarkup()} />;
    
    export default SendToMessengerEnhancer(SendToMessengerView);
    

    推荐文章