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

news/2024/11/29 18:34:22/

介绍

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")@ResponseBodypublic 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.ppmy.cn/news/88972.html

相关文章

openGauss Developer Day 2023 | 邀您参加海量数据分论坛

尊敬的数据库开发者 &#xff1a; 海量数据 已为您备好一封通往数智时代的邀请函&#xff0c;请您于 5月26日 前往北京昆泰嘉瑞文化中心&#xff0c;赶赴 openGauss Developer Day 2023 的盛大约定。 本次专场活动中&#xff0c;海量数据将会轮番为您展示最核心的技术…

关于信号包络检测

说明 最近在调研学习数字滤波的东西&#xff0c;看到关于信号包络检测这样一个知识点&#xff0c;感觉很有意思&#xff0c;于是想着简单捋清楚并写篇博文装载起来总结一下。本博文与车载毫米波雷达的信号和数据处理无关&#xff0c;所以本文不会放到车载毫米波雷达系列专题规划…

代码随想录算法训练营第49天 | 121、122

121. 买卖股票的最佳时机 题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回…

Reid strong baseline 代码详解

本项目是对Reid strong baseline代码的详解。项目暂未加入目标检测部分&#xff0c;后期会不定时更新&#xff0c;请持续关注。 本相比Reid所用数据集为Markt1501&#xff0c;支持Resnet系列作为训练的baseline网络。训练采用表征学习度量学习的方式。 目录 训练参数 训练代…

URLConnection(三)

文章目录 1. 配置连接2. protected URL url3. protected boolean connected4. protected boolean allowUserInteraction5. protected boolean doInput5. protected boolean doOutput6. protected boolean isModifiedSince7. protected boolean useCaches8. 超时 1. 配置连接 U…

[PyTorch][chapter 35][经典卷积神经网络-1 ]

前言&#xff1a; ILSVRC&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一&#xff0c;代表了图像领域的最高水平。 ImageNet数据集是ILSVRC竞赛使用的是数据集&#xff0c;由斯坦福大学李…

手机号码在网时长 API 实现广告投放和精准营销案例分析

引言 手机在网时长是指用户在移动网络上的在线时间&#xff0c;包括用户接入网络的时间和断开网络的时间。手机在网时长 API 是一种提供手机在网时长数据的编程接口&#xff0c;为开发者和服务提供商提供了获取和利用这些数据的能力。 本文旨在深入探讨手机在网时长 API 的技…

ElasticSearch 快速上手教程(一)—— ES 的安装

简介 ElasticSearch 是一个开源的搜索引擎&#xff0c;基于 Lucene 开发与构建&#xff0c;是当前流行的企业级搜索引擎&#xff0c;在许多应用场景当中都有使用&#xff0c;如商品全文检索&#xff0c;书籍关键字查询等。在这个系列的文章&#xff0c;会带你从零到一&#xf…