- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Gatsby 网站上,我有一个 SEO 组件 seo.js
使用在博客模板中调用的 React Helmet blog.js
.但是 Facebook Share 无法识别 opengraph 标签。该站点托管在 Gatsby Cloud 上,而不是 Netlify。
我在网上搜索了答案,但找不到任何东西。 This post没有成功。它似乎没有缓存,重新抓取没有任何作用。
直接查看页面源时当然会出现标签。在这里完全不知所措。其他具有类似设置的站点工作正常。 ¯\_(ツ)_/¯
如果有人遇到过类似的问题,我很想听听他们是如何解决这个问题的。想法?谢谢。
下面的代码和错误示例:
# seo.js
import React from 'react'
import PropTypes from 'prop-types'
import { Helmet } from 'react-helmet'
import { useStaticQuery, graphql } from 'gatsby'
function SEO({ description, lang, meta, title, pageUrl, image, post, children }) {
const { site } = useStaticQuery(
graphql`
query {
site {
siteMetadata {
title
description
siteUrl
author
}
}
}
`
)
const metaDescription = description || site.siteMetadata.description
const metaTitle = title || site.siteMetadata.title
const metaUrl = pageUrl || site.siteMetadata.siteUrl
return (
<Helmet
defer={false}
htmlAttributes={{
lang,
}}
defaultTitle={metaTitle}
titleTemplate={`%s`}
meta={meta}
>
{/* General tags */}
<title>{metaTitle}</title>
<meta name="image" content={image} />
<meta name="description" content={metaDescription} />
{/* OpenGraph tags */}
<meta property="og:title" content={metaTitle} />
<meta property="og:type" content={post ? `article` : `website`} />
<meta property="og:url" content={metaUrl} />
<meta property="og:image" content={image} />
<meta property="og:description" content={metaDescription} />
{/* Twitter Card tags */}
<meta name="twitter:card" content="summary" />
<meta name="twitter:creator" content="{site.siteMetadata.author}" />
<meta name="twitter:title" content={metaTitle} />
<meta name="twitter:image" content={image} />
<meta name="twitter:description" content={metaDescription} />
{children}
</Helmet>
)
}
SEO.defaultProps = {
lang: `en`,
meta: [],
description: ``,
}
SEO.propTypes = {
description: PropTypes.string,
lang: PropTypes.string,
title: PropTypes.string,
}
export default SEO
# blogs.js
import React from 'react'
import { graphql, Link } from 'gatsby'
import { Container, Row, Col, useScreenClass, Visible } from 'react-grid-system'
import SEO from '../components/seo'
import Layout from '../components/layout'
import Main from '../components/main'
import BlogList from '../components/insights/blogList'
import Pagination from '../components/pagination'
const Blog = (props) => {
const {
seoTitle,
seoDescription,
seoHelmet,
} = props.data.contentfulPage
const posts = props.data.allContentfulInsightsPage.edges
const { currentPage } = props.pageContext
const screenClass = useScreenClass()
return (
<Layout>
<SEO
title={`${seoTitle} ${currentPage > 1 ? `- Page ${currentPage}` : `` }`}
description={seoDescription?.seoDescription ? seoDescription.seoDescription : false}
>
{seoHelmet ? seoHelmet.seoHelmet : ''}
</SEO>
<Main>
<h1 className={`headline`}>Blog</h1>
<BlogList posts={posts} />
<Pagination context={props.pageContext} />
</Main>
</Layout>
)
}
export const query = graphql`
query($skip: Int!, $limit: Int!) {
contentfulPage(slug: {eq: "blog"}) {
id
slug
seoTitle
seoDescription {
seoDescription
}
seoHelmet {
seoHelmet
}
}
allContentfulBlogs(
sort: { fields: [date], order: DESC }
limit: $limit
skip: $skip
) {
edges {
node {
id
title
slug
date
preview
text {
json
}
image {
localFile {
...blogThumbnail
}
}
category {
name
slug
}
}
}
}
}
`
export default Blog
⚠️ Warnings That Should Be Fixed
Inferred Property
The 'og:image' property should be explicitly provided, even if a value can be inferred from other tags.
Missing Properties
The following required properties are missing: og:url, og:type, og:title, og:image, og:description, fb:app_id
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<style data-href="/styles.13d4056a8a600210f038.css">a,abbr, ... </style>
<meta name="generator" content="Gatsby 2.19.49">
<title data-react-helmet="true"></title>
<link as="font" href=" ... " rel="preload" crossorigin="anonymous">
<style id="jss-server-side"></style>
<style data-styled="" data-styled-version="4.4.1"></style>
<script>window.dataLayer = window.dataLayer || []; ... </script>
<link rel="sitemap" type="application/xml" href="/sitemap.xml">
<link rel="canonical" href=" ... " data-baseprotocol="https:" data-basehost=" ... ">
<link rel="icon" href="/icons/icon-48x48.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="manifest" href="/manifest.webmanifest">
<meta name="theme-color" content="#3FB6E8">
<link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=4b382095dbd38c63f79bce6052737f30">
<link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=4b382095dbd38c63f79bce6052737f30">
<link as="script" rel="preload" href="/component---src-templates-insight-js-0b3261c291dd76b6e32d.js">
<link as="script" rel="preload" href="/commons-0606cae2f0bba83915df.js">
<link as="script" rel="preload" href="/app-595ec14f594e84b72fc9.js">
<link as="script" rel="preload" href="/styles-9336dff5557f552f77fc.js">
<link as="script" rel="preload" href="/webpack-runtime-5af2f2a5f9a736a820a9.js">
<link as="fetch" rel="preload" href="/page-data/insights/key-strategies-for-building-websites-that-capture-and-convert/page-data.json" crossorigin="anonymous">
<link as="fetch" rel="preload" href="/page-data/app-data.json" crossorigin="anonymous">
</head>
<body>
<noscript><iframe src="https://www.googletagmanager.com/ns.html? ... " height="0" width="0" style="display: none; visibility: hidden"></iframe></noscript>
<div id="___gatsby">
<div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"></div>
<div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div>
</div>
<script id="gatsby-script-loader">/*<![CDATA[*/ ... /*]]>*/</script>
<script id="gatsby-chunk-mapping">/*<![CDATA[*/ ... /*]]>*/</script>
<script src="/webpack-runtime-5af2f2a5f9a736a820a9.js" async=""></script>
<script src="/styles-9336dff5557f552f77fc.js" async=""></script>
<script src="/app-595ec14f594e84b72fc9.js" async=""></script>
<script src="/commons-0606cae2f0bba83915df.js" async=""></script>
<script src="/component---src-templates-insight-js-0b3261c291dd76b6e32d.js" async=""></script>
</body>
</html>
gatsby-plugin-react-helmet
by default material-ui
package.json
"dependencies": {
"@contentful/rich-text-react-renderer": "^13.4.0",
"@fullpage/react-fullpage": "^0.1.17",
"@material-ui/core": "^4.9.3",
"@material-ui/styles": "^4.9.0",
"@vimeo/player": "^2.10.0",
"babel-eslint": "^10.0.3",
"babel-plugin-styled-components": "^1.10.6",
"eslint": "^6.8.0",
"eslint-plugin-graphql": "^3.1.1",
"gatsby": "^2.18.12",
"gatsby-background-image": "^0.9.12",
"gatsby-cli": "^2.9.0",
"gatsby-image": "^2.2.34",
"gatsby-plugin-canonical-urls": "^2.1.20",
"gatsby-plugin-google-tagmanager": "^2.1.24",
"gatsby-plugin-manifest": "^2.2.31",
"gatsby-plugin-material-ui": "^2.1.6",
"gatsby-plugin-offline": "^3.1.1",
"gatsby-plugin-preload-fonts": "^1.0.34",
"gatsby-plugin-react-helmet": "^3.2.1",
"gatsby-plugin-robots-txt": "^1.5.0",
"gatsby-plugin-sass": "^2.1.26",
"gatsby-plugin-sharp": "^2.3.5",
"gatsby-plugin-sitemap": "^2.2.26",
"gatsby-plugin-smoothscroll": "^1.0.4",
"gatsby-plugin-styled-components": "^3.1.16",
"gatsby-plugin-transition-link": "^1.17.7",
"gatsby-plugin-typography": "^2.3.20",
"gatsby-source-contentful": "^2.1.73",
"gatsby-source-filesystem": "^2.1.40",
"gatsby-transformer-sharp": "^2.3.7",
"gh-pages": "^2.2.0",
"gsap": "^3.0.5",
"intersection-observer": "^0.7.0",
"node-sass": "^4.13.0",
"polished": "^3.4.2",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-formio": "^4.2.4",
"react-grid-system": "^6.0.7",
"react-helmet": "^6.0.0-beta",
"react-hook-form": "^4.9.6",
"react-icons": "^3.8.0",
"react-intersection-observer": "^8.25.2",
"react-player": "^1.15.2",
"react-redux": "^7.1.3",
"react-remove-scroll": "^2.2.0",
"react-scroll": "^1.7.15",
"react-scroll-to": "^3.0.0-beta.3",
"react-scrollmagic": "^2.1.1",
"react-slick": "^0.25.2",
"react-typography": "^0.16.19",
"redux": "^4.0.5",
"styled-components": "^4.4.1",
"typography": "^0.16.19",
"uuid": "^3.4.0"
},
最佳答案
我们最近偶然发现了这个问题。我们已经解决了这个问题,请检查是否:
关于facebook-opengraph - Facebook Share 未从 Gatsby 站点获取 Open Graph 元标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60861086/
我发现了许多声明 opengraph 的方法。但哪一种是“正确”的方式? http://ogp.me/在源代码中使用 但在示例中,html-tag 改为: 与 facebook 的组合看起来像
我想知道是否有一种方法可以使Facebook搜寻器忽略页面上的规范链接。 我遇到一种情况,规范链接指向的URL与您实际所在的URL不同。 这导致动态添加到页面的og:image,og:url等被忽略,
我有一个应用程序,我在其中创建了一个具有自定义属性的自定义对象。该对象称为“字符”,自定义属性是主题(作为字符串)和用户(作为配置文件)。 我有一个名为“投票”的操作,其中包含一个引用上述自定义对象的
我一直在查看 Open Graph 文档,但没有遇到可以为多个用户定义的操作。 例如,x 与 y 一起跑了一条路线,或者 x 向 y 发送了一张照片。 目前是否可以这样做,如果不能,是否有人知道将来是
我有一个 opengraph 对象 https://example.com/object支持多个区域设置,特别是 en_US和fr_FR默认第一个。 在 Facebook 的对象调试器中解析它可以正确
我有一个网站,在 中适本地列出了一个简单的 500x500 图片 Facebook 有时会裁剪并使用图像的顶部、中间或在某些情况下使用底部以获得所需的纵横比。我可以做些什么来控制它吗?或者更好的是,
我刚刚通过设置开放图元标记在我的网站 ( http://traveleagle.in ) 上添加了 facebook 社交插件。根据最近的指南,我在 og:image 中使用了一张大小为 600x31
在 swift 4 中,我使用 Open Graph API 将帖子分享到我的 Facebook 提要。这已成功发布到我的 Feed,但我 friend 列表中的其他用户看不到分享帖子,只有我可以 -
因此,在 facebook 上,自动收报机显示我网站上最近的故事,现在,我需要做什么才能让行情显示有人正在“查看”帖子这一事实。 我尝试的任何操作最终都会说“已查看”帖子。有没有办法让它通过 open
我正在一个网站上做一些 SEO 调整,我注意到 Whatsapp 接受最后列出的任何“og:image”。出于某种奇怪的原因,当我列出 whatsapp 的小图片时,我的推特卡片也选择了那个,而不是我
Google +1 button generator表示我需要为缩略图指定。 文档页面says遵循以下顺序: Schema.org microdata Open Graph protocol 三个
这是我要在 Facebook 上共享的所有页面上加载的开放图形图像。它在某些页面上正确加载,而在其他页面上它从页面中选择随机图像。以下是 OG 网址。我正在为我的网站使用 Drupal CMS。所有正
我正在尝试将标准对象类型(文章)与自定义操作(讨论)结合使用。根据文档,这似乎是可能的,但我收到一个没有意义的奇怪错误。错误消息实际上缺少引用类型。似乎是 Facebook 的错误,但我不能确定。 非
我的应用正在为用户生成 OpenGraph 对象,我想为这些用户提供对象的分析(总展示次数、点击次数等)。 我尝试使用图形 API 通过 https://graph.facebook.com/APP_
在我的 facebook 应用程序中,我为开放图 url 提供了必要的元标记。当我使用开放图发布故事时,故事以一对一 - 无对象标题模式发布在墙上。当我在打开图形设置中查看它时,一对一 模式显示正确。
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: get wrong ogtype in object debugger 我有一个与 FB open grap
OpenGraph documentation提供了一个“全图示例”: 但是,这与提到以下属性的开场齐发冲突是必需的: og:title og:type og:image og:url 那么
我正在尝试使用 NodeJS 从网页中抓取数据。我使用 request 模块获取数据并使用 cheerio 进行解析。但是我注意到一件事:当我使用 chrome 访问某些页面(例如 this nyt
我必须在我的 android 应用程序中集成 facebook 之类的按钮。我已经创建了一个 facebook 页面,当用户单击喜欢按钮时,从 android 应用程序应该喜欢 facebook 页面
我想知道 opengraph 标记是否是 W3C 有效的,当我尝试验证它时出现以下错误: Line 14, Column 17: there is no attribute "PROPERTY"
我是一名优秀的程序员,十分优秀!