我在个人资料页面上有一个“在Facebook上分享”链接,该页面包含用户头像和作业等动态内容。
如果用户在Facebook上分享内容,那么facebook open graph会在og:meta中使用好的信息并正常工作。如果用户更改了它的信息并再次点击“在Facebook上分享”链接,则由于打开图形缓存,信息不会更新。 我希望更新内容,然后根据需要刷新打开的图形缓存(当用户触发链接或打开页面时)。
这是我发现的(而不是工作):
Test1:使用调试工具
config/initializers/facebook_og.rb
module FacebookOpenGraph
def self.clear_cache(url)
uri = URI('https://developers.facebook.com/tools/debug/og/object')
res = Net::HTTP.post_form(uri, 'q' => "#{url}")
end
end
测试2:使用开放图
config/initializers/facebook_og.rb
module FacebookOpenGraph
def self.clear_cache(url)
uri = URI('https://graph.facebook.com')
res = Net::HTTP.post_form(uri, 'id' => "#{url}", 'scrape' => 'true')
end
end
测试3:使用API(在此处找到:http://mdenomy.wordpress.com/2014/01/)
config/initializers/facebook_og.rb
module FacebookOpenGraph
def self.clear_cache(url)
params = {
:client_id => ENV['FACEBOOK_APP_ID'],
:client_secret => ENV['FACEBOOK_APP_SECRET'],
:grant_type => "client_credentials"
}
uri = URI("https://graph.facebook.com/oauth/access_token?#{params.to_query}")
response = Net::HTTP.get(uri)
access_token = Rack::Utils.parse_nested_query(response)["access_token"]
unless access_token.nil?
uri = URI('https://graph.facebook.com')
res = Net::HTTP.post_form(uri, 'id' => "#{url}", 'scrape' => 'true',
'access_token' => "#{access_token}", 'max' => '500')
end
end
end
在我的页面中,我在og meta调用之前将此行添加到顶部:
<% FacebookOpenGraph.clear_cache(controller_action_url(@user, subdomain: 'player')) %>
我尝试添加http://player.domain.com/2?<%= rand(1000..9999) %>
之类的随机数,但没有成功
基本上,这些技术都不起作用。所以...任何帮助都会非常感激。 (对不起,我的英语不好) KR。
答案 0 :(得分:0)
最后我使用了测试3 API版本(感谢mdenomy)并将其置于用户更新其信息时触发的后台作业中。
我的问题是无法正常工作的网址(子网域&amp; i18n语言环境并且正确地转义整个网站)。现在一切都很好。