The Open Graph protocol(开放图谱协议)的介绍及应用

news2024/11/30 0:35:19

介绍

Open Graph 协议使任何网页都可以成为社交中的丰富对象。例如,用于 Facebook 以允许任何网页具有与 Facebook 上任何其他对象相同的功能。

以下是把链接分享到钉钉,钉钉识别后显示的效果:

基本元数据

要将网页变成图形对象,需要将基本元数据添加到页面。在网页中放置额外的<meta>标签。<head>页面的几个必需属性是:

  • og:title- 对象的标题,如上图中的第一行。
  • og:description- 对象的描述,如上图的第二行。
  • og:image- 一个图像 URL,如上图中的右侧图像。
  • og:url- 对象的规范 URL,将用作图表中的永久 ID,例如“https://www.milovetingting.cn/”。

一个简单的示例:

<!DOCTYPE html>
<html>

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta property="og:title" content="这是标题">
    <meta property="og:description" content="这是内容">
    <meta property="og:image" content="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fbf6fe5f0-4e5c-4dd1-9545-f58151164f0c%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1687600526&t=3464298caa9ef5ecf854ef360e9db93c">
    <meta property="og:url" content="https://www.milovetingting.cn">
    <title>示例页面</title>
  </head>

  <body>
    <p>这是一个示例页面。</p>
  </body>

</html>

具体案例

需求

web中某个具体的页面分享到whatsapp,并能显示为卡片形式,当点击卡片时跳转我们指定的页面。

实现

由于项目是用flutter开发,整个web实际运行时都是在index.html上显示。而由于我们需要在不同页面显示不同的标题、描述、图片等信息,因此需要动态修改这些元数据。

方案一

通过js脚本读取当前网页的url,并提取需要的参数,再通过js动态修改对应的meta元素。

运行后,通过查看网页元素,发现meta信息已经设置上去,但是在whatsapp中无法识别。

原因:og元数据不能通过js动态设置。

方案二

通过访问服务端的一个接口,在接口中返回具体的html页面数据,然后在html中再作跳转。

当分享到whatsapp时,会首先访问这个接口,接口返回的数据,会被识别出来,从而形成卡片效果。而当点击时,会先访问到接口返回的页面,然后这个页面会做重定向到实际需要分享的页面。

@Controller
@RequestMapping("/share")
public class ShareController {

  @RequestMapping("/chance")
  @ResponseBody
  public String share() {
    Random random = new Random();
    return "<!DOCTYPE html>\n" +
      "<html>\n" +
      "\n" +
      "<head>\n" +
      "    <meta charset=\"UTF-8\">\n" +
      "    <meta http-equiv=\"refresh\" content=\"1;url=https://www.milovetingting.cn\"> \n" +
      "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n" +
      "    <meta property=\"og:title\" content=\"这是标题"+random.nextInt(100)+"\">\n" +
      "    <meta property=\"og:description\" content=\"这是内容"+random.nextInt(100)+"\">\n" +
      "    <meta property=\"og:url\" content=\"https://www.milovetingting.cn\" />" +
      "    <meta property=\"og:image\" content=\"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fbf6fe5f0-4e5c-4dd1-9545-f58151164f0c%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1687600526&t=3464298caa9ef5ecf854ef360e9db93c\" />" +
      "    <title>示例页面" + random.nextInt(100) + "</title>\n" +
      "</head>\n" +
      "\n" +
      "<body>\n" +
      "    <p>这是一个示例页面。</p>\n" +
      "</body>\n" +
      "\n" +
      "</html>";
  }

}

参考

更多meta数据可参考下面网址:

https://ogp.me/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【如何在三个月时间里,从零基础小白变身为专业的数据分析师?】

如何在三个月时间里&#xff0c;从零基础小白变身为专业的数据分析师&#xff1f; 随着数字经济、大数据时代的发展&#xff0c;数据已然成为当下时代最重要的盈利资源&#xff0c;让企业在做决策和计划方案时更有针对性和依据&#xff0c;能提前预测市场发展方向&#xff0c;做…

【C++学习】异常

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《C学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 异常 &#x1f96e;异常&#x1f362;自定义异常体系&#x1f362;C标准库的异常体系&#x1f362;异…

Linux 开机过程

参考链接 Linux引导过程 Linux 系统的运行级别 Linux 系统总共有设置了 7 种运行级别。分别是&#xff1a; 0 级&#xff1a;关机&#xff1b;1 级&#xff1a;单用户模式&#xff1b;2 级&#xff1a;无网络的多用户模式&#xff1b;3 级&#xff1a;多用户模式&#xff0…

EasyDSS调用录像回看接口出现报错“请先合成mp4”,是什么原因?

EasyDSS支持一站式的上传、转码、直播、回放、嵌入、分享功能&#xff0c;具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务&#xff0c;全面满足超低延迟、超高画质、超大并发访问量的要求。 有用户反馈&#xff0c;在…

内网搭建 SFTP 服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

Spring Security 6.x 系列【44】微服务篇之统一身份认证实现方案

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 单体架构2. 微服务架构2.1 概述2.2 统一身份认证3. 认证方式3.1 JWT3.2 …

【TI毫米波雷达笔记】IWR6843AOPEVM-G+DCA1000EVM的mmWave Studio数据读取、配置及避坑

【TI毫米波雷达笔记】IWR6843AOPEVM-GDCA1000EVM的mmWave Studio数据读取、配置及避坑 硬件方面连接好以后 就可以打开mmWave Studio了 配置 如果硬件配置成功 则可以通过mmWave Studio的Output看到配置信息 按照如图步骤 在radar api里面一步步来操作 其中 RS232选择波特率…

细节有惊喜!详解Web自动化框架UI自动截图与画面回放实现!

目录 前言&#xff1a; Web自动化测试框架基本结构及原理 UI自动截图实现方法 基于Selenium截图实现UI自动截图的过程如下&#xff1a; 基于Selenium截图的代码实现如下&#xff1a; 基于爬虫截图实现UI自动截图的流程如下&#xff1a; 基于爬虫截图的代码实现如下&#…

springboot+vue4S店车辆管理系统(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的4S店车辆管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

【评测】真我Realme GT Neo5手机性能评测

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 目录 购买记录 鲁大师评测 安兔兔评测 个人使用感受 优点 几个明显的体验感不好的点 大图、多图预警&#xff01; 配置说明&#xff1a; 运行内存&#xff1a;12GB存储容量&#xff1a;256GB充电功率&#…

4.spring总结

文章目录 一、spring总结1、Spring三级缓存解决什么问题&#xff1f;2、Spring支持的几种bean的作用域&#xff1f;3、pring bean是否是线程安全&#xff1f;4、*Spring框架中bean的生命周期*&#xff1f;5、哪些是重要的bean生命周期方法&#xff1f;你能重载它们吗&#xff1…

《微服务实战》 第二十三章 Redis RDB AOF

前言 Redis 提供了两种持久化机制&#xff1a;第一种是 RDB&#xff0c;又称快照&#xff08;snapshot&#xff09;模式&#xff0c;第二种是 AOF 日志&#xff0c;也就追加模式。 1、RDB RDB 即快照模式&#xff0c;它是 Redis 默认的数据持久化方式&#xff0c;它会将数据…

【Flutter 工程】004-代码生成:functional_widget

【Flutter 工程】004-代码生成&#xff1a;functional_widget 文章目录 【Flutter 工程】004-代码生成&#xff1a;functional_widget一、概述1、Flutter 开发痛点2、functional_widget 函数小部件3、主页 二、基本使用1、安装 functional_widget2、传统写法3、运行结果4、代码…

App Inventor 2 连接打印机(Printer),自定义打印的实现

本教程主要分享App Inventor 2连接网络打印机进行自定义打印的思路及方法&#xff0c;这里只进行思路的讲解及关键步骤的效果演示&#xff0c;细节需自行完善。主要用到社交应用组件中的信息分享器组件。 打印App示意图 连接打印机教程&#xff08;难度系数&#xff1a;★★&a…

值得尝试的Voyager Linux,没有Snap,出色的定制

一直以来我都不喜欢 Ubuntu GNOME 的默认外观&#xff0c;而且对Ubuntu强制使用Snap应用不是很喜欢&#xff0c;之前我用的是Ubuntu MATE这个发行版&#xff0c;直到我听说了Voyager Linux。今天特意安装试用了一下Voyager Linux 23.04&#xff0c;有几点功能我很喜欢&#xff…

适用于 Windows 电脑的 6 款最佳视频转换器

视频转换器可以帮助您转换和播放设备上不受支持的视频格式。减小视频文件大小、以通用格式组织所有视频或与他人共享文件以在不同设备上播放也很方便。 Windows 有很多视频转换器可供选择。有些是免费的&#xff0c;有些则提供适合专业用户的高级功能。在本指南中&#xff0c;…

Java程序设计入门教程--Java语言概述

目录 1.1 Java语言诞生与发展 1.2 Java语言的特点 1.3 运行机制与虚拟机 1.1 Java语言诞生与发展 Java语言的诞生最早可以追溯至1991年&#xff0c;那时称为OAK语言&#xff0c;是SUN公司为一些消费性电子产品而设计的一个通用环境&#xff0c;其最初目的只是为了开发一种独…

完美解决接口测试难题,数据驱动带签名混合封装框架实现

目录 前言&#xff1a; 一、框架概述 二、框架架构 三、代码实现 四、实战步骤 五、总结 前言&#xff1a; 接口自动化测试是保障软件质量的重要手段之一&#xff0c;其自动化程度越高&#xff0c;越能有效提高软件测试效率。而接口自动化测试中&#xff0c;接口测试框架…

推荐 6 款还不错的文档协作工具~

你们团队是否正在寻找便捷丰富功能的文档协作软件&#xff1f; 文件协作软件帮助你和你的团队更有效地工作&#xff0c;并进行实时协作&#xff0c;为创新创造更多的空间。 但是&#xff0c;今天有数百种文档协作工具&#xff0c;你应该选择哪一种呢&#xff1f; 为了帮助你…

SpringSecurity的认证原理及如何自定义认证结合MyBatis替换原数据源

文章目录 一、自定义认证二、自定义登录界面三、自定义成功的处理1、前后端分离返回json 四、如何在前端显示异常1、传统的方法2、前后端分离返回错误的json 五、注销登录配置1、注销登录前后端不分离2、前后端分离的方法 六、登录⽤户数据获取1、SecurityContextHolder2、Secu…