Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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
Ruby on rails Rails 4-用于共享按钮/链接的Facebook清除缓存_Ruby On Rails_Facebook_Facebook Graph Api_Caching_Share - Fatal编程技术网

Ruby on rails Rails 4-用于共享按钮/链接的Facebook清除缓存

Ruby on rails Rails 4-用于共享按钮/链接的Facebook清除缓存,ruby-on-rails,facebook,facebook-graph-api,caching,share,Ruby On Rails,Facebook,Facebook Graph Api,Caching,Share,我在个人资料页面上有一个“在facebook上分享”链接,上面有动态内容,比如用户头像和工作 如果用户在facebook上共享内容,facebook open graph会在og:meta中获取好的信息,并正确地完成工作。如果用户更改了它的信息,并再次单击“在facebook上共享”链接,则由于开放图形缓存,信息不会更新。 我希望更新内容,然后按需刷新open graph缓存(当用户触发链接或打开页面时) 以下是我发现的(但不起作用): Test1:使用调试器工具 config/initiali

我在个人资料页面上有一个“在facebook上分享”链接,上面有动态内容,比如用户头像和工作

如果用户在facebook上共享内容,facebook open graph会在og:meta中获取好的信息,并正确地完成工作。如果用户更改了它的信息,并再次单击“在facebook上共享”链接,则由于开放图形缓存,信息不会更新。 我希望更新内容,然后按需刷新open graph缓存(当用户触发链接或打开页面时)

以下是我发现的(但不起作用):

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(可在此处找到:)

在我的页面中,我在og meta调用之前的顶部添加了这一行:

<% FacebookOpenGraph.clear_cache(controller_action_url(@user, subdomain: 'player')) %>

我尝试添加一个随机数,如
http://player.domain.com/2?
,但没有成功

基本上,这些技术都不起作用。所以任何帮助都将不胜感激。 (对不起,我的英语不好)
KR.

最后,我让它与Test3API版本一起工作(感谢mdenomy),并将它放在后台作业中,当用户更新它的信息时触发


我的问题是url不能正常工作(子域&i18n语言环境&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash)。现在一切正常。

如果您尝试使用Facebook调试工具清除缓存,会发生什么?输入您试图清除缓存的URL,查看是否有任何错误或是否成功。此外,这可能有助于解决您在尝试使用FaceBook调试工具时遇到的问题如果我手动执行,缓存将正确刷新。我在测试1中尝试自动执行此操作,基本上,“”是facebook在您按下调试按钮时生成的url,它通过post传递p=“your url”。我想知道我的问题是否不是我传递的url,也许我必须解析它。我希望我正确理解了你的问题。谢谢,这是帖子中的一个“q=”yoururl“,不是一个“p=”,很抱歉打错了。顺便说一句,当我复制粘贴firefox地址栏中的“developers.facebook.com/tools/debug/og/object?p=”myurl“时,它返回调试器页面,并警告“解析输入URL时出错,未刮取任何数据”。你完成了以下操作吗?非常好!谢谢
<% FacebookOpenGraph.clear_cache(controller_action_url(@user, subdomain: 'player')) %>