我已经为我的网站设置了一系列Twitter卡。

Twitter卡的类型为[summary_large_image]。

我的网页<head>中包含的元信息是:

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@myTwitterAccount" />
<meta name="twitter:creator" content="@myTwitterAccount" />

<meta name="twitter:image:src" content="http://example.com/social/twitter/large_image.png" />
<meta name="twitter:image:width" content= "280" />
<meta name="twitter:image:height" content= "480" />

<meta property="og:image" content="http://example.com/social/twitter/large_image.png" />
<meta property="og:image:width" content= "280" />
<meta property="og:image:height" content= "480" />

<meta property="og:url" content="http://example.com/myfolder/mysubfolder/" />
<meta property="og:title" content="My Page Title" />
<meta property="og:description" content="My Page Description" />


我认识到上面的标记中有冗余-在当前设置之前,我尝试添加和删除任意数量的og:twitter: meta元素以产生(减少冗余)的替代组合...

Twitter已对我的[summary_large_image] Tw​​itter卡的网域进行了审核并将其列入白名单。

Twitter Card Validator返回以下日志:

INFO:  Page fetched successfully
INFO:  19 metatags were found
INFO:  twitter:card = summary_large_image tag found
INFO:  Card loaded successfully


卡上的所有元素在验证程序和我自己的Twitter流中都可以正常显示,除了...

... the图像不存在。

我设法使图像一次在笔记本电脑上显示(但是再也没有,而且我不确定那一次我做了什么不同)。

完全没有问题要在本机iOS Twitter应用程序上显示的图像-该图像始终显示在应用程序上。

有指针吗?谢谢。

#1 楼

@MattGreer的2020更新:

现在图像需要为1200x630,不再是2:1。
一旦我使用了该尺寸,图像就会开始显示。请参阅@johanv的
答案。


2015年的原始答案:
在图像显示之前,有两个主要注意事项需要注意。 [summary_large_image] twitter卡:


图像尺寸必须(至少)符合最小宽度(280px)和最小高度(150px)。任何较窄或更短的图像都将不会显示。


页面无法(似乎)引用其[summary_large_image] twitter卡的图像,另一页面的[summary_large_image] twitter卡具有该图像已经被引用。如果尝试这样做,将不会显示图像。 (此限制不适用于本机iOS Twitter应用。)


我规避了限制2的方法是使用PHP函数
uniqid()

将随机字母数字字符串附加到
http://example.com/social/twitter/large_image.png

echo '<meta property="og:image" content="http://example.com/social/twitter/large_image.png?'.uniqid().'" />';


评论


在我的测试中,除非该图像的确切长宽比为2:1(根据当前文档),否则仍不会显示该图像:“此卡的图像支持长宽比为2:1,最小尺寸为300x157或最大为4096x4096像素。”

–詹姆斯
17年4月3日在8:46

关于唯一性,是通过Internet还是仅在您自己的网站中?随着时间的流逝,我有很多图像消失,我想知道为什么。他们仍然在那里,我什至可以使用Card Validator进行测试并查看图像,但是当我转到自己的Twitter提要时,它就不存在了。

– Alexis Wilke
18年5月20日在22:24

@jamesk我确认这不是问题。我正在使用其他宽高比的卡。问题很可能是Twitter的卡片缓存,更新非常缓慢。要强制刷新它,请参见此处:stackoverflow.com/a/58842765/2873507

– Vic Seedoubleyew
19年11月13日在17:46

看来现在图像需要为1200x630,不再是2:1。使用该尺寸后,我的图像开始显示。见@johanv的答案

–马特·格里尔(Matt Greer)
20/12/08在18:37

谢谢@MattGreer。我们应该期望这样的实现细节会经常更新,所以我在上面的答案的顶部(上面紧紧地强调了您的评论),以便人们抓住它。

–罗宁
20 Dec 9'在9:53

#2 楼

在大多数情况下,这可能只是Twitter的卡片缓存。更新非常缓慢,最多需要一周。

要强制刷新,请参见:https://stackoverflow.com/a/58842765/2873507



转到https://cards-dev.twitter.com/validator

键入要更新的URL,但要进行更改。例如,添加?utm_source=Whatever

,然后使用您的Twitter卡上的任何推文重新加载页面

当Twitter验证程序遇到此不同的URL时,它将清除其
缓存并提取新版本。


#3 楼

以我为例,我的图像路径有一个额外的正斜线,在浏览器中可以正常工作,但并未被Twitter接受。这是一个很难发现的字符错误。

例如检查以下内容:

https://example.com//myphoto.jpg


并将其更改为:

https://example.com/myphoto.jpg


#4 楼

万一这对其他人有用,我的问题是使用相对路径而不是完整URL。例如,/images/example.png我必须将其更改为https://example.com/images/example.png

评论


感谢您添加@MattGaunt! :-D

–罗宁
20年4月28日在9:33

#5 楼

我遇到了同样的问题,并且尝试了很多事情。我检查了robots.txt,检查了meta标签,检查了Twitter文档上的图像规格(纵横比为2:1,最小尺寸为300x157或最大为4096x4096像素。图像尺寸必须小于5MB),我四处乱逛,四处搜寻,一切都没有用。 (卡被缓存的事实也无济于事。)
最后,我查看了我的Twitter流,并单击到卡中确实有图片的页面,查看了meta标签。在该页面上,并尝试在我的帖子中使用该页面的图像。猜猜是什么:这行得通。 br
因此该特定站点的图片尺寸为1200x630。我所做的就是更改了图片,因此它也是1200x630像素。我在twitter:image元标记中使用了该标记,现在它可以正常使用。
所以文档可能已过时了?无论如何,如果您遇到此问题,可以尝试将图片的尺寸更改为1200x630。

#6 楼

我为此抓挠了头,因为我做对了所有事情。原来,我的页面是从上面没有元属性标签的时候开始缓存的。
当我使用其验证器时,卡片图像立即显示在Facebook和Twitter上。
Twitter:https:// cards-dev.twitter.com/validator
Facebook:https://developers.facebook.com/tools/debug/

#7 楼

我遇到了类似的问题。
我的问题是该URL从API返回为//www.example.com/foo.jpg。在开头添加https:对我来说就是固定的。