javascript - 客户聊天不适用于 React Messenger 客户聊天

标签 javascript reactjs facebook chat facebook-chat

我想将 Facebook 客户聊天插件集成到 React Web 应用程序中。

应用程序在 URL 上以开发模式运行:http://localhost:3000/

使用的 npm 包:react-messenger-customer-chat

创建了一个同名的新 Facebook 应用和 Facebook 网站,并在 Facebook for Developers 中将它们连接起来。

在 React 端存储应用 ID页面 ID

在“设置”->“基本”->应用程序域:localhost中添加(输入“http://localhost:3000/,但保存为“localhost”

添加了一个新平台 -> 网站:http://localhost:3000/

在 Messenger 平台上列入白名单 -> 高级设置 -> 白名单域:http://127.0.0.1:3000/ , https://127.0.0.1:3000/ , https://127.0.0.1:3000/ , https://127.0.0.1/

设置 React 代码,将参数传递给新组件。重新加载后,我收到来自 Facebook 的 200 响应,但网站中显示了一个空 div,我无法使其工作(甚至尝试使用纯 Javascript 脚本或创建一个测试应用程序)。

在 App.js 中使用:

import React from 'react';
import MessengerCustomerChat from 'react-messenger-customer-chat';

import { FACEBOOK_APP_ID, FACEBOOK_PAGE_ID } from '../../shared/configuration';

const Chat = (props) => (
  <div>
    <MessengerCustomerChat pageId={FACEBOOK_PAGE_ID} appId={FACEBOOK_APP_ID} />
  </div>
);

export default Chat;

请求网址:

https://www.facebook.com/v2.11/plugins/customerchat.php?app_id=<MY_APP_APP_ID>&channel=https%3A%2F%2Fstaticxx.facebook.com%2Fx%2Fconnect%2Fxd_arbiter%2F%3Fversion%3D46%23cb%3Df197f00e47470a%26domain%3Dlocalhost%26origin%3Dhttp%253A%252F%252Flocalhost%253A3000%252Ff229f87298f7008%26relation%3Dparent.parent&container_width=0&locale=en_US&page_id=MY_APP_PAGE_ID>&request_time=1603379771509&sdk=joey

响应 header :

alt-svc: h3-29=":443"; ma=3600,h3-27=":443"; ma=3600
cache-control: private, no-cache, no-store, must-revalidate
content-encoding: br
content-security-policy: default-src * data: blob: 'self';script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;block-all-mixed-content;upgrade-insecure-requests;
content-security-policy: frame-ancestors https://www.facebook.com;
content-type: text/html; charset="utf-8"
date: Thu, 22 Oct 2020 15:16:11 GMT
expires: Sat, 01 Jan 2000 00:00:00 GMT
facebook-api-version: v8.0
pragma: no-cache
status: 200
strict-transport-security: max-age=15552000; preload
vary: Accept-Encoding
x-content-type-options: nosniff
x-fb-debug: 3hcF+KdxLlfSCdNr3qJFo24n/o8y1GyMJRbFbyeBdoZdhniyI8ummvUQAGY6KB8GAdDePynl83js0QmsH6a5xA==
x-xss-protection: 0

HTML代码(第一个'div'应该是'Chat'组件内容,其他两行由npm包注入(inject)): enter image description here

此问题的解决方案是什么?

最佳答案

使用 Facebook 聊天插件开发和测试 React 应用程序时,不能选择域名“localhost”。

  1. 在操作系统的hosts文件中添加一个新条目,例如:127.0.0.1 react-with-chat-app.com
  2. 在 Windows 上,以管理员身份运行命令提示符,使用 ipconfig/flushdns 命令。
  3. 在 React 项目的根目录中添加 .env 文件,并添加新的主机名:HOST=react-with-chat-app.com
  4. 添加 http://react-with-chat.com/ 到 Facebook 网站白名单域数组,并将 Facebook 应用程序的网站也更改为 http://react-with-chat.com/
  5. 重新启动 React 应用程序,并使用以下方式访问: http://react-with-chat-app.com:3000 ,并测试聊天功能。

关于javascript - 客户聊天不适用于 React Messenger 客户聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64485630/

相关文章:

javascript - switch 语句中有 html 和变量

php - javascript事件不处理脚本

java - JavaScript 中 Java 的 Thread.sleep() 等价物是什么?

javascript - react 路由器链接错误的网址

python - 在 Django 中创建自定义用户模型的指南

iphone - 关于从我的 iOS 应用程序进行 Facebook 单点登录的问题

javascript - 如何将 InDesign/InCopy 脚本化为 "Check In"和 "Check Out"文本框?

javascript - React setState 不合并所有更改

reactjs - 如何让爬虫知道在 Gatsby React 中重定向页面

python - 如何使该页面在登录/注销时重新加载?