4

SinatraとRest-Graphgemを使用してFacebookアプリを作成しました。次に、アプリをFacebookページのiframeタブとして埋め込みます

signed_requestそのためには、Facebookからアプリに送信されたデータを取得する必要があります。

Rest-Graph gemは、Githubページに次の機能を示しています

access_tokenを抽出し、cookies/signed_requestのsigをチェックするユーティリティ

この「ユーティリティ」の使用方法に関するドキュメントが見つかりませんでした。いくつかのドキュメントを教えてもらえますか、それ以上に、これがRuby /Sinatraでどのように使用されるかについての例を教えてください。

4

2 に答える 2

7

利用可能なほぼすべてのGraphAPIライブラリは、signed_requestを同様の方法で処理します。Rest-Graphには、 Sinatraで呼び出すことができるparse_signed_requestメソッド(Rest-Graph / lib / core.rb )があります。

私はシナトラでこれにコアラを使用しています、そしてそれは宣伝通りに機能します:

oauth = Koala::Facebook::OAuth.new(APP_ID, APP_CODE)
signed_request = oauth.parse_signed_request(params["signed_request"])

Facebookが投稿したJSONオブジェクトのハッシュが返されます。

{
"algorithm"=>"HMAC-SHA256",
"issued_at"=>1303883452, 
"user"=> 
{
"country"=>"us",
"locale"=>"en_US"
},
"user_id"=>"100002364226618"
}

レストグラフも非常に簡単です。Sinatraアプリでこれをテストしました。完璧に動作します:

rg = RestGraph.new( :app_id => APP_ID, :secret => APP_SECRET)
parsed_request = rg.parse_signed_request!(params["signed_request"])

Lemmeは、それがうまくいかないかどうかを知っています。

于 2011-04-27T14:49:53.547 に答える
0

Rest-Graphgemの開発者である「cardinalblue」からこの質問への回答がありました。この小さな例はまさに私が探していたものでした:

require 'sinatra'
require 'rest-graph'

app_id = '123'
secret = 'abc'
config = {:app_id => app_id,
          :secret => secret}

post '/' do
  rg = RestGraph.new(config)
  rg.parse_signed_request!(params['signed_request'])
  "#{rg.get('me').inspect.gsub('<', '&lt;')}\n"
end

run Sinatra::Application

補足:同様の何かを構築している場合は、に注意してくださいpost '/' do。Facebookページは、GETの代わりにPOSTリクエストを使用してページをフェッチします。

于 2011-05-02T20:10:55.947 に答える