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デバッガーにアチーブメントを配置すると、対応するアチーブメントが登録されることに気付きました。そこで、2つのajaxリクエストを実行します。最初のリクエストはFacebookデバッガーに送信し、次に(最初のリクエストが完了した後)FacebookグラフAPIに送信します。

于 2012-11-21T14:21:59.350 に答える