Кнопка «Отправить в мессенджер» не отображается - PullRequest
0 голосов
/ 05 июля 2018

Я хочу добавить кнопку Send To Messenger в мое веб-приложение. Проблема в среде localhost , кнопка рендерится, а в среде staging - нет. (хотя в двух средах используются одинаковые page_id и messenger_app_id)

Это код кнопки «Отправить отправителю»:

<div
class="fb-send-to-messenger"
page_id="568015096933xxx"
messenger_app_id="402876686862xxx"
color="blue"
size="xlarge"
data-ref="123456"
cta_text="SUBSCRIBE_TO_UPDATES"></div>

Примечание: Я добавил домен промежуточного веб-сайта в белые списки страниц Facebook.

1 Ответ

0 голосов
/ 11 июля 2018

Вот мой «грязный» обходной путь для этой проблемы ... По сути, я скопировал HTML-код обработанной кнопки и создал из нее компонент.

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

Некоторые примечания:

  • Мое приложение построено на Метеор , поэтому вы увидите Meteor.settings, Meteor.user() и т. Д.
  • Я использую Перекомпоновка , чтобы помочь в создании HOC

Надеюсь, это поможет другим, у кого возникла такая же проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...