facebook graph apiのgem koalaを使って友達一覧を取得する件2
先日ブログでver1.0にしてからfacebookの友達の数を取得するようにしていましたが、会社の同僚の方から「これで出来るよ」と教えてもらったので、再度書きます。
修正方法はズバリ
@api = Koala::Facebook::API.new('ACCESS_TOKEN') p @api.get_object('me') p @api.get_object('/v2.1/me/friends').raw_response
これで取得した結果summaryというキーで「total_count: 10」というのが取れるので、これで友達数が取得出来ます。
ちなみにテストは、こういう感じになりました。
describe 'FacebookVerification API v1' do let(:mock_facebook_obj) do double(Koala::Facebook::API::GraphCollection) end describe 'POST /facebook_verification' do context 'f~~~の場合' do before do stub_graph = double(Koala::Facebook::API) stub_graph.should_receive(:get_object).with('/v2.1/me/friends').and_return(mock_facebook_obj) mock_facebook_obj.should_receive(:raw_response).and_return( mock_facebook_obj.should_receive(:raw_response).and_return( { data: [ { name: 'Test Facebook_user1', id: '529521869' }.deep_stringify_keys, { name: 'Test Facebook_user2', id: '632979490' }.deep_stringify_keys, { name: 'Test Facebook_user3', id: '641652697' }.deep_stringify_keys, { name: 'Test Facebook_user4', id: '641652699' }.deep_stringify_keys, { name: 'Test Facebook_user5', id: '641652622' }.deep_stringify_keys, { name: 'Test Facebook_user6', id: '641652555' }.deep_stringify_keys, { name: 'Test Facebook_user7', id: '641651222' }.deep_stringify_keys, { name: 'Test Facebook_user8', id: '641797357' }.deep_stringify_keys, { name: 'Test Facebook_user9', id: '641619294' }.deep_stringify_keys, { name: 'Test Facebook_user10', id: '64193487' }.deep_stringify_keys], paging: { next: 'https://graph.facebook.com/v2.1/720075131399186/friends?access_token=aaaa' }.deep_stringify_keys, summary: { total_count: 10 }.deep_stringify_keys }.deep_stringify_keys ) Koala::Facebook::API.stub(:new).and_return(stub_graph) end context 'facebook_access_tokenが送られた場合' do let(:path) { "https://hogehgoe/fuga}" } before do params = { facebook_access_token: 'access_token' } post path, params end it '200 OK が返ってくる' do expect(response.status).to eq(200) end it 'responseにokという文字が変える' do expect(json[:status]).to eq('ok') end it 'current_userのfacebook_verifiedがtrueになる' do current_user.reload expect(current_user.facebook_verified).to be_true end end end end end