2014-10-18 49 views
0

因此,我目前正在构建一个单一页面的应用程序,因此需要在所有数据加载后更新元数据。 (该应用程序是严格的JavaScript和HTML,有很少到没有后端尝试轻量级...整个应用程序是〜50kb)改变Facebook GraphAPI页面抓取数据

不幸的是,在调查这个问题后,我认识到Facebook将永远不会因为js不会运行,因此在屏幕抓取过程中查看更新后的元。

但是我没有意识到,当你的请求后,以https://graph.facebook.com/id=http://sitename其与此格式的对象响应:

{ 
    "url": "http://site/", 
    "type": "website", 
    "title": "site name", 
    "image": [ 
     { 
     "url": "http://site/thumb.jpg" 
     } 
    ], 
    "description": "site description", 
    "updated_time": "2014-10-18T20:10:29+0000", 
    "id": # 
} 

我的问题是,是否有可能更新此对象,并发送回Facebook的你希望他们使用的值?

回答

1

据我所知,Facebook刮板只读取标题中设置的数据和OG标签。请参阅:http://davidwalsh.name/facebook-meta-tags

因此,通过在您的应用程序中正确设置它们,Facebook应该选择数据。请记住,Facebook刮板有一个缓存系统,可以使用Facebook URL linter(手动)清除缓存系统。

该工具也可用于调试。请参阅https://developers.facebook.com/tools/debug

当页面加载时,数据需要存在“静态”(或通过服务器端语言放置),因为Facebook刮板不会分析Javascript。

+0

在DOM被加载后元获得更新,我相信刮只读取静态html,所以它从来没有看到我的任何数据。这意味着使用调试器刷新数据不会有什么好处 – 2014-10-18 21:01:39

+0

我不认为这是可能的。 Facebook的刮板确实读取每个网址的静态数据(或动态放置)并且不会调用Javascript。你能告诉我们更多关于你为什么需要把它放在那里的JavaScript? – 2014-10-18 21:05:25

+0

因为我的应用程序总共只有3页,不包括js和样式表。 (404,主页和数据页面)。我在URL中使用散列来确定加载的正确的JSON(http:// site/data /#id)。因为所有这些逻辑都是通过js完成客户端的,这意味着元数据在DOM加载之后才能被更新,然后刮板已经被刮掉了 – 2014-10-18 21:16:45