我正在尝试使用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}}
但@url
的成就html
<meta property="og:type" content="game.achievement" />
属性。 如果我把这个HTML放到Facebook调试器,它不会显示任何错误,并识别类型为game.achievement。 如果我使用输入编写带有加载自动提交的HTML表单,则可以创建成就。
因此我从rails控制器发出请求的方式似乎有问题。
任何帮助,请%)
答案 0 :(得分:0)
我注意到如果我首先将成就@url
添加到facebook调试器,那么它将注册相应的成就。
所以现在我做了两个ajax请求:第一个到facebook调试器,然后(在第一个完成之后)到facebook图形api。