分享网页到FaceBook的问题

由于项目中需要分享一个网页到社交App中,供C端用户使用。如分享到微信、Facebook、WhatsApp等。
分享到微信时很简单,只需要按照微信提供的分享SDK要求参数传入就可以了。
这些参数包含标题、描述、图片和点击的网页链接,需要注意的是文字长度和图片尺寸不要超过微信的要求即可。

但是当分享网页到Facebook时,Facebook使用的是Open Graph Protocol(开发图谱协议)从网页链接对应的Html文件中解析特定meta标签,来获取展示在好友动态中的链接信息(图片、标题、描述)。如下图所示:

所以我们必须在分享网页中事先添加好对应的meta标签,具体meta标签含义如下:

如果说,og:title、og:description、og:image对应的内容是固定的值,那么就可以写死在分享的网页中。但是,如果是动态内容,对于是前后端分离的项目,html页面不是由服务端渲染的,那么就需要通过JS脚本额外从服务端请求数据,但是Facebook是无法抓取到的,因为在执行分享操作时不会执行Html页面中JS脚本。

那么该怎么解决呢?

  1. 放弃使用网页分享的方式,改为文本或图片的分享
  2. 改为SSR(Server Size Render)方式构建网页
  3. 将分享的静态网页链接改为一个服务端请求,由服务端完成查询数据的操作后,插入meta到静态html页面中

上面三种方式中:
第一种应该是最简单的,但是会与产品要求不符。
第二种是最合理,但改动成本比较大,与开发模式不符。
第三种是比较鸡贼的做法,涉及到了文件操作。但是要求后端服务与前端项目部署到同一个服务器,否则无法访问到静态html页面。并且静态html页面路径和名称会被限制死。

那么还有没有更好的方案呢?
当然有,我想到的终极方案就是:

由后端渲染一个提供必要meta标签的极简html页面,并在这个极简HTML页面中做一次二次跳转,跳转到真正的分享页面。

举个例子:
假如我实际要分享的链接A为 https://www.xxx.com/details?id=1234。
而提供给Facebook的链接B为 http://www.xxx.com/facebook_test?id=1234

在链接B对应的html中提供了必要的meta标签和二次跳转的操作:

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="xxxxx">//以下内容是由服务端查询对应id数据后生成的<meta property="og:title" content="页面标题"><meta property="og:description" content="页面描述"><meta property="og:image" content="https://xxxxx.png"></head><body><script language='javascript'>document.location = '链接A'</script></body>
</html>

这样做的话,就可以再Facebook中正确的显示分享信息,并且点击后可跳转到实际的分享页面中。

分享网页到FaceBook的问题相关推荐

  1. 分享网页加载速度优化的一些技巧?

    日期:2013-2-17  来源:GBin1.com 不管你是不是相信,在最近的几年里,互联网网页的大小已经显著增大了.由HTTP Archive研究得出的结果表明,目前平均一个页面的大小是1.25M ...

  2. 微信分享网页链接缩略图不显示解决方法

    微信分享网页链接缩略图不显示解决方法 参考文章: (1)微信分享网页链接缩略图不显示解决方法 (2)https://www.cnblogs.com/68xi/p/11596254.html 备忘一下.

  3. 微信分享网页链接自定义图片和文字描述

    今天开发需要微信分享网页链接自定义图片和文字描述,于是网上各种查找资料和各种看手册,遇到了好多坑,不过啃了半天以后终于把问题解决了,以防以后忘记,今天记录一下; 首先,由于微信已经发布了想要分享链接必 ...

  4. html怎么写分享代码,怎么写一个文件分享网页?百度一键分享按钮HTML代码

    怎么写一个文件分享网页?首先一个基本的网页包含主要的哪些就不说了,下面直接上关键的代码即可,把他放到需要的地方即可.下面一起来看看吧. 百度一键分享按钮HTML代码 下面是需要加分享按钮的css代码 ...

  5. 好程序员web前端教程分享网页设计需要学那些东西?

    好程序员web前端教程分享网页设计需要学那些东西:初次接触或者想要进入网页设计行业的朋友会经常分不清楚web前端与网页设计之间的区别,不知道网页设计要学什么,web前端要学什么,因此感到很迷茫,下面老 ...

  6. 分享网页文章到微信时如何自定义缩略图、链接、标题和摘要

    1.分享网页文章到微信时自定义缩略图.链接.标题和摘要的方法: var imgUrl = http://www.gettool.cn/GetwxLink/xxx.jpg';var lineLink = ...

  7. Android开发丶集成微信原生分享并于分享网页时加载网络缩略图

    微信分享也是一项很常用的功能了,以往都是用友盟或者mobShareSDK框架来实现的,这两者在微信官方的sdk基础上封装的很好,并且加入了一些很实用性的功能,不过这次因为只有微信平台的分享,而且微信登 ...

  8. html页面微信分享如何隐藏链接,微信分享网页链接缩略图不显示解决方法

    微信分享网页不显示缩略图片的原因 为规范自定义分享链接功能在网页上的使用,自2017年4月25日起,JSSDK"分享到朋友圈"及"发送给朋友"接口,自定义的分享 ...

  9. php分享网页到微信,分享网页链接到微信朋友圈或朋友

    前提 微信自6.5.5版本起对分享网页链接做了限制,如果不接入JSSDK,则分享出去的内容不会显示自定义的图片,而是显示一张默认图片 使用JSSDK进行分享时,需要一个经过微信认证的服务号或者订阅号, ...

最新文章

  1. git 创建邮箱 用户名_git设置用户名和邮箱
  2. 【NLP】基于预训练的中文NLP工具介绍:ltp 和 fastHan
  3. [修正] Berlin 10.1 支持 iPhone 4 (iOS v7.x)
  4. IoTDI2019论文列表
  5. java中创建窗口用的什么_JAVA 窗口的创建
  6. RapidMiner tuts
  7. 在《Windows程序设计》中出现过的消息
  8. Python的矩阵分块
  9. php iterator接口,PHP预定义接口之Iterator(迭代器)接口演示
  10. eclipse tomcat 热部署
  11. CC2530和8051(51单片机)的关系
  12. pyltp python具体使用
  13. 10个CSS技巧,极大提升用户体验
  14. swagger导出接口文档
  15. 自动化如何影响到你?传统5天工作制或成过去
  16. 负整数及浮点数的二进制表示
  17. ios13测试版怎么卸载软件,苹果iOS13怎么卸载软件 iOS13删除软件教程
  18. Lua计算kronecker 积、Khatri-Rao积、Hadamard积、普通矩阵乘积
  19. S3C2440系统中断(转)
  20. 程序员之禅的10条黄金法则

热门文章

  1. 哇塞!最受欢迎的Python编程书籍!值得收藏
  2. CSS背景缩写、简写详细
  3. 郭明錤:苹果5G调制解调器预计最早2022年面世
  4. 软考信息系统项目管理师质量管理论文范例
  5. 轩辕剑外传天之痕游戏评析
  6. 南通大学计算机科学与技术学院电话,2017年南通大学计算机科学与技术学院江苏省内第二批本科(院校代码:1301)...
  7. 从红魔3到红魔6,创新不断的红魔手机值得同行学习
  8. 写文章时,你是不是也有这4个困惑?
  9. bat批处理脚本学习(一)
  10. [2016湘潭邀请赛 A. 2016] 大数取模+循环节