几乎所有可用的 Graph API 库都以类似的方式处理 signed_request。Rest-Graph 有一个可以在 Sinatra 中调用的 parse_signed_request 方法(Rest-Graph/lib/core.rb )。
我将考拉与 Sinatra 一起使用,它的工作原理与宣传的一样:
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"
}
rest-graph 也很容易。刚刚在 Sinatra 应用程序中对此进行了测试。完美运行:
rg = RestGraph.new( :app_id => APP_ID, :secret => APP_SECRET)
parsed_request = rg.parse_signed_request!(params["signed_request"])
让我知道这是否不适合你。