Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook graph api 是否可以从获取的url而不是规范url提取元数据?_Facebook Graph Api_Metadata_Facebook Opengraph_Fetch_Canonical Link - Fatal编程技术网

Facebook graph api 是否可以从获取的url而不是规范url提取元数据?

Facebook graph api 是否可以从获取的url而不是规范url提取元数据?,facebook-graph-api,metadata,facebook-opengraph,fetch,canonical-link,Facebook Graph Api,Metadata,Facebook Opengraph,Fetch,Canonical Link,我有一个类似Facebook的链接,指向我无法完全控制的页面:我可以修改页面的,但不能修改页面的。。。 因此,我尝试在一个我拥有完全控制权的新页面上设置like按钮的链接,在这个页面上设置opengraph元标记,并设置一个og:url链接到原始页面 但最终Facebook试图从og:url中提取元数据,并覆盖上一页的元标记。。。 是否可以判断我想从第一个获取的url而不是og:url中提取元数据?无法指示linter从url与og:url中定义的url不同的页面提取OpenGraph元数据 L

我有一个类似Facebook的链接,指向我无法完全控制的页面:我可以修改页面的
,但不能修改页面的
。。。 因此,我尝试在一个我拥有完全控制权的新页面上设置like按钮的链接,在这个页面上设置opengraph元标记,并设置一个og:url链接到原始页面

但最终Facebook试图从og:url中提取元数据,并覆盖上一页的元标记。。。
是否可以判断我想从第一个获取的url而不是og:url中提取元数据?

无法指示linter从url与
og:url
中定义的url不同的页面提取OpenGraph元数据

Linter总是从链末尾的
og:URL
中定义的URL中提取元标记

有一种方法可以做其他事情(可能适合,也可能不适合您的需要):

您可以创建中间页面,该页面将包含所有必需的OpenGraph,包括指向该页面的
og:url
(而不是您无法控制的页面)。该页面将只有元数据和JavaScript/meta重定向到最终页面,因此登录此中间页面的用户将被重定向到正确的最终页面


注意,这会将所有喜欢的内容与“最终”页面关联,而与中间页面关联。

我认为Facebook Debug/linter中存在一个bug,关于哪个URL可以包含OG元数据。你的OG:URL应该是规范的,这意味着这个URL应该在今天、明天和十年后都能正常工作。其中,共享的url是暂时的,web开发人员不能保证“获取”url将保持不变。您的canonical/og:url可能重定向到具有og:tags的最终目标

但是,FacebookLinter中的错误在于它没有通过og:url进行以下重定向。i、 e.在哪里,这可能只是重定向到友好的URL,例如。也许FaceBook的某个人可以澄清他们对“应该从规范的URL遵循重定向”的解释

谷歌的意见

rel=“canonical”可以是重定向吗?是的,您可以指定一个 重定向为规范URL。谷歌随后将根据需要处理重定向 通常,并尝试索引它


当前的FaceBook调试/Linter实践是在其到达OG:URL时停止,而不是按照标准HTTP重定向到达OG标记。我认为谷歌对Canonical的定义更准确。。这是web开发人员期望的典范。

谢谢,很好的解决方案!我刚刚将javascript重定向放在第一个中间页面,它可以工作。。。我知道把元数据放在最后一页的开头会更好,但直到有一天我将无法访问该页面才行!谢谢你,好先生。这非常适用于Javascript单页应用程序。Facebook的爬虫程序没有获得正确的信息,因为页面在客户端用Javascript动态呈现,爬虫程序只是解析服务器提供的html外壳文件。使用这种技术,我进行了服务器端调用,以我需要的方式呈现元标记,并最终将客户端重定向到我的Javascript单页web应用程序。这正是我所需要的。再次感谢!