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コントローラーからのリクエストを投稿する方法に問題があるようです。
助けてください %)