我正在尝试使用 RoR 3.2.8 在 Facebook 上注册新成就,
这是我的控制器的动作
require 'net/http'
require 'uri'
...
def create
# achievement url
@url = "http://smth.herokuapp.com/achievements/fb/ach.html"
# fb graph api url
@fbcall = "https://graph.facebook.com/#{FB_APP_ID}/achievements"
uri = URI(@fbcall)
res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https', :verify_mode => OpenSSL::SSL::VERIFY_PEER) do |http|
req = Net::HTTP::Post.new(uri.path)
req.set_form_data('access_token' => FB_APPLICATION_TOKEN, 'achievement' => @url, 'display_order' => '5')
response = http.request req
end
@ans = res.body.to_s()
end
@ans
我每次都得到以下
{"error":{"message":"(#3502) Object at achievement URL is not of type game.achievement","type":"OAuthException","code":3502}}
但是成就html@url
有
<meta property="og:type" content="game.achievement" />
其中的财产。如果我将此 html 放到 Facebook 调试器中,它不会显示任何错误并将类型识别为 game.achievement。如果我编写带有在加载时自动提交的输入的 HTML 表单,则可以创建成就。
所以我从 Rails 控制器发布请求的方式似乎有问题。
任何帮助,请 %)