Rails Facebook成就错误

时间:2012-11-14 11:40:19

标签: ruby-on-rails facebook-graph-api

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

任何帮助,请%)

1 个答案:

答案 0 :(得分:0)

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