我想将Send To Messenger按钮集成到我的Web应用程序中。问题出在 localhost 环境中,按钮可以渲染,但是在登台环境中,按钮没有渲染。 (即使两个环境使用相同的page_id
和messenger_app_id
)
这是“发送到Messenger”按钮的代码:
<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>
在localhost中,该按钮显示: HTML of the rendered button.
在暂存中,按钮未显示: HTML of the rendered button.
注意:我确实将登台网站的域添加到了Facebook页面的白名单网站中。
答案 0 :(得分:0)
这是我解决此问题的“肮脏”方法...基本上,我复制了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=&color=blue&container_width=532&cta_text=${ctaText}&enforce_login=false&locale=${language}&messenger_app_id=${appId}&page_id=${pageId}&ref=${userId}&sdk=joey&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=&channel=${channelEncoded}&color=${color}&container_width=532&cta_text=${ctaText}&enforce_login=false&locale=${language}&messenger_app_id=${appId}&page_id=${pageId}&ref=${userId}&sdk=joey&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);
一些注意事项:
希望这对遇到相同问题的其他人有所帮助。