0

我正在尝试使用 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 控制器发布请求的方式似乎有问题。

任何帮助,请 %)

4

1 回答 1

0

我注意到,如果我@url先将成就放入 facebook 调试器,那么它将注册相应的成就。所以现在我做了两个 ajax 请求:第一个到 facebook 调试器,然后(在第一个完成后)到 facebook graph api。

于 2012-11-21T14:21:59.350 回答