自分があまりQuestionを利用しないのでこのAPIの需要が分かっていないんですが…
- Questionsの取得には「user_questions」又は「friends_questions」のpermissionが必要
- /USER_ID/questionsでUSER_IDのQuestion一覧を取得
- /QUESTION_ID/optionsで選擇肢を取得(この情報は/USER_ID/questionsに含まれているけど。。。)
- /QUESTION_OPTION_ID/votesで投票したユーザの一覧を取得
試してみました、
require 'haml'
require 'koala'
require 'omniauth'
require 'rubygems'
require 'sinatra'
APP_ID = "212005055538084"
APP_SECRET = "hogehoge"
enable :sessions
use OmniAuth::Strategies::Facebook, APP_ID, APP_SECRET, :scope => 'user_questions'
get '/auth/facebook/callback' do
auth_hash = request.env["omniauth.auth"]
uid = auth_hash["uid"]
token = auth_hash["credentials"]["token"]
graph = Koala::Facebook::API.new token
result = graph.batch do |api|
# 毎回:batch_args => ...て書くの気持ち悪いので特異メソッド定義
def api.get_connects(id, conn, name="")
self.get_connections(
id, conn, {},
:batch_args => { :name => name, :omit_response_on_success => false})
end
api.get_connects uid, "questions", "get-qs"
api.get_connects "{result=get-qs:$.data[0].id}", "options", "get-ops"
api.get_connects "{result=get-ops:$.data[0].id}", "votes"
api.get_connects "{result=get-ops:$.data[1].id}", "votes"
api.get_connects "{result=get-ops:$.data[2].id}", "votes"
end
haml '%div= result.to_s', :locals => { :result => result }
end
こんなjson返ってきました。
[
[
{
"id": "170514669705292",
"from": {
"name": "Sinjin Ra",
"id": "100002402797320"
},
"question": "今年の流行語は?",
"created_time": "2011-10-30T12:25:51+0000",
"updated_time": "2011-10-30T12:25:51+0000",
"options": {
"data": [
{
"id": "267486769961495",
"from": {
"name": "Sinjin Ra",
"id": "100002402797320"
},
"name": "トゥットゥルー",
"votes": 3,
"created_time": "2011-10-30T12:25:50+0000"
},
{
"id": "234349516624548",
"from": {
"name": "Sinjin Ra",
"id": "100002402797320"
},
"name": "ドラマチックこそ、 人生です。",
"votes": 2,
"created_time": "2011-10-30T12:25:48+0000"
},
{
"id": "309092772438842",
"from": {
"name": "Sinjin Ra",
"id": "100002402797320"
},
"name": "ほびろん",
"votes": 2,
"created_time": "2011-10-30T12:25:49+0000"
}
],
"paging": { ...
..]
Herokuで試してみました、初Herokuです、
デプロイ(git push)したらアプリが動いているって画期的です、
…久々にClojure触りたくなってきました(HerokuはClojureもサポート)

