fb_graph2 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/VERSION +1 -1
- data/fb_graph2.gemspec +2 -1
- data/lib/fb_graph2/achievement.rb +3 -1
- data/lib/fb_graph2/application.rb +4 -0
- data/lib/fb_graph2/collection.rb +1 -1
- data/lib/fb_graph2/edge/albums.rb +5 -0
- data/lib/fb_graph2/edge/blocked.rb +7 -2
- data/lib/fb_graph2/edge/comments.rb +1 -1
- data/lib/fb_graph2/edge/feed.rb +1 -1
- data/lib/fb_graph2/edge/notifications.rb +6 -0
- data/lib/fb_graph2/edge/photos.rb +1 -1
- data/lib/fb_graph2/edge/shared_posts.rb +1 -1
- data/lib/fb_graph2/edge/videos.rb +1 -1
- data/lib/fb_graph2/page.rb +6 -1
- data/lib/fb_graph2/page_category.rb +7 -0
- data/lib/fb_graph2/user.rb +1 -0
- data/spec/fb_graph2/application_spec.rb +23 -0
- data/spec/fb_graph2/collection_spec.rb +11 -0
- data/spec/fb_graph2/edge/achievements_spec.rb +18 -0
- data/spec/fb_graph2/edge/activities_spec.rb +18 -0
- data/spec/fb_graph2/edge/admins_spec.rb +40 -0
- data/spec/fb_graph2/edge/albums_spec.rb +30 -0
- data/spec/fb_graph2/edge/blocked_spec.rb +60 -0
- data/spec/fb_graph2/edge/books_spec.rb +18 -0
- data/spec/fb_graph2/edge/events_spec.rb +18 -0
- data/spec/fb_graph2/edge/friend_lists_spec.rb +18 -0
- data/spec/fb_graph2/edge/friends_spec.rb +18 -0
- data/spec/fb_graph2/edge/groups_spec.rb +18 -0
- data/spec/fb_graph2/edge/home_spec.rb +18 -0
- data/spec/fb_graph2/edge/interests_spec.rb +18 -0
- data/spec/fb_graph2/edge/invitable_friends_spec.rb +18 -0
- data/spec/fb_graph2/edge/likes_spec.rb +4 -4
- data/spec/fb_graph2/edge/links_spec.rb +18 -0
- data/spec/fb_graph2/edge/milestones_spec.rb +18 -0
- data/spec/fb_graph2/edge/movies_spec.rb +18 -0
- data/spec/fb_graph2/edge/music_spec.rb +18 -0
- data/spec/fb_graph2/edge/notifications_spec.rb +29 -0
- data/spec/fb_graph2/edge/permissions_spec.rb +18 -0
- data/spec/fb_graph2/edge/picture_spec.rb +16 -0
- data/spec/fb_graph2/edge/pokes_spec.rb +18 -0
- data/spec/fb_graph2/edge/posts_spec.rb +18 -0
- data/spec/fb_graph2/edge/promotable_posts_spec.rb +18 -0
- data/spec/fb_graph2/edge/scores_spec.rb +18 -0
- data/spec/fb_graph2/edge/shared_posts_spec.rb +18 -0
- data/spec/fb_graph2/edge/statuses_spec.rb +18 -0
- data/spec/fb_graph2/edge/television_spec.rb +18 -0
- data/spec/fb_graph2/edge/videos_spec.rb +28 -0
- data/spec/fb_graph2/request_filter/authenticator_spec.rb +25 -0
- data/spec/fb_graph2/request_filter/debugger_spec.rb +33 -0
- data/spec/fb_graph2/user_spec.rb +1 -1
- data/spec/fb_graph2/util_spec.rb +19 -0
- data/spec/mock_json/application/app.json +15 -0
- data/spec/mock_json/page/admins.json +11 -0
- data/spec/mock_json/page/block_succeeded.json +3 -0
- data/spec/mock_json/page/blocked.json +11 -0
- data/spec/mock_json/page/milestones.json +19 -0
- data/spec/mock_json/page/promotable_posts.json +67 -0
- data/spec/mock_json/post/shared_posts.json +50 -0
- data/spec/mock_json/success_true.json +3 -0
- data/spec/mock_json/user/achievements.json +40 -0
- data/spec/mock_json/user/activities.json +36 -0
- data/spec/mock_json/user/albums.json +23 -0
- data/spec/mock_json/user/books.json +11 -0
- data/spec/mock_json/user/events.json +16 -0
- data/spec/mock_json/user/friend_lists.json +98 -0
- data/spec/mock_json/user/friends.json +18 -0
- data/spec/mock_json/user/groups.json +16 -0
- data/spec/mock_json/user/home.json +61 -0
- data/spec/mock_json/user/interests.json +41 -0
- data/spec/mock_json/user/invitable_friends.json +27 -0
- data/spec/mock_json/user/links.json +45 -0
- data/spec/mock_json/user/movies.json +11 -0
- data/spec/mock_json/user/music.json +45 -0
- data/spec/mock_json/user/notifications.json +111 -0
- data/spec/mock_json/user/permissions.json +114 -0
- data/spec/mock_json/user/picture.json +6 -0
- data/spec/mock_json/user/pokes.json +17 -0
- data/spec/mock_json/user/posts.json +48 -0
- data/spec/mock_json/user/scores.json +14 -0
- data/spec/mock_json/user/statuses.json +15 -0
- data/spec/mock_json/user/television.json +11 -0
- data/spec/mock_json/user/videos.json +41 -0
- data/spec/spec_helper/mock_graph.rb +1 -1
- data/spec/spec_helper.rb +7 -0
- metadata +84 -5
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Music do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#music' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Page' do
|
|
8
|
+
pages = mock_graph :get, 'me/music', 'user/music', access_token: 'token' do
|
|
9
|
+
me.music
|
|
10
|
+
end
|
|
11
|
+
pages.should_not be_blank
|
|
12
|
+
pages.each do |page|
|
|
13
|
+
page.should be_instance_of FbGraph2::Page
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Notifications do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#notifications' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Notification' do
|
|
8
|
+
notifications = mock_graph :get, 'me/notifications', 'user/notifications', access_token: 'token' do
|
|
9
|
+
me.notifications
|
|
10
|
+
end
|
|
11
|
+
notifications.should_not be_blank
|
|
12
|
+
notifications.each do |notification|
|
|
13
|
+
notification.should be_instance_of FbGraph2::Notification
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '#notification!' do
|
|
19
|
+
let(:user) { FbGraph2::User.new('user_id') }
|
|
20
|
+
it 'should return true' do
|
|
21
|
+
mock_graph :post, 'user_id/notifications', 'success_true', access_token: 'app_token', params: {
|
|
22
|
+
href: 'href', template: 'template'
|
|
23
|
+
} do
|
|
24
|
+
user.authenticate('app_token').notification! href: 'href', template: 'template'
|
|
25
|
+
end.should be true
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Permissions do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#permissions' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Struct::Permission' do
|
|
8
|
+
permissions = mock_graph :get, 'me/permissions', 'user/permissions', access_token: 'token' do
|
|
9
|
+
me.permissions
|
|
10
|
+
end
|
|
11
|
+
permissions.should_not be_blank
|
|
12
|
+
permissions.each do |permission|
|
|
13
|
+
permission.should be_instance_of FbGraph2::Struct::Permission
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Picture do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#picture' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it do
|
|
8
|
+
mock_graph :get, 'me/picture', 'user/picture', access_token: 'token', params: {
|
|
9
|
+
redirect: false
|
|
10
|
+
} do
|
|
11
|
+
me.picture
|
|
12
|
+
end.should be_instance_of FbGraph2::Struct::Picture
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Pokes do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#pokes' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Struct::Poke' do
|
|
8
|
+
pokes = mock_graph :get, 'me/pokes', 'user/pokes', access_token: 'token' do
|
|
9
|
+
me.pokes
|
|
10
|
+
end
|
|
11
|
+
pokes.should_not be_blank
|
|
12
|
+
pokes.each do |poke|
|
|
13
|
+
poke.should be_instance_of FbGraph2::Struct::Poke
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Posts do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
6
|
+
describe '#posts' do
|
|
7
|
+
it 'should return an Array of FbGraph2::Post' do
|
|
8
|
+
posts = mock_graph :get, 'me/posts', 'user/posts', access_token: 'token' do
|
|
9
|
+
me.posts
|
|
10
|
+
end
|
|
11
|
+
posts.should_not be_blank
|
|
12
|
+
posts.each do |post|
|
|
13
|
+
post.should be_instance_of FbGraph2::Post
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::PromotablePosts do
|
|
4
|
+
context 'included in Page' do
|
|
5
|
+
describe '#promotable_posts' do
|
|
6
|
+
let(:page) { FbGraph2::Page.new('page_id').authenticate('page_token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Post' do
|
|
8
|
+
posts = mock_graph :get, 'page_id/promotable_posts', 'page/promotable_posts', access_token: 'page_token' do
|
|
9
|
+
page.promotable_posts
|
|
10
|
+
end
|
|
11
|
+
posts.should_not be_blank
|
|
12
|
+
posts.each do |post|
|
|
13
|
+
post.should be_instance_of FbGraph2::Post
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Scores do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#scores' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Struct::Score' do
|
|
8
|
+
scores = mock_graph :get, 'me/scores', 'user/scores', access_token: 'token' do
|
|
9
|
+
me.scores
|
|
10
|
+
end
|
|
11
|
+
scores.should_not be_blank
|
|
12
|
+
scores.each do |score|
|
|
13
|
+
score.should be_instance_of FbGraph2::Struct::Score
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::SharedPosts do
|
|
4
|
+
context 'included in Post' do
|
|
5
|
+
describe '#shared_posts' do
|
|
6
|
+
let(:post) { FbGraph2::Post.new('post_id').authenticate('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Post' do
|
|
8
|
+
posts = mock_graph :get, 'post_id/sharedposts', 'post/shared_posts', access_token: 'token' do
|
|
9
|
+
post.shared_posts
|
|
10
|
+
end
|
|
11
|
+
posts.should_not be_blank
|
|
12
|
+
posts.each do |post|
|
|
13
|
+
post.should be_instance_of FbGraph2::Post
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Statuses do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
6
|
+
describe '#statuses' do
|
|
7
|
+
it 'should return an Array of FbGraph2::Post' do
|
|
8
|
+
posts = mock_graph :get, 'me/statuses', 'user/statuses', access_token: 'token' do
|
|
9
|
+
me.statuses
|
|
10
|
+
end
|
|
11
|
+
posts.should_not be_blank
|
|
12
|
+
posts.each do |post|
|
|
13
|
+
post.should be_instance_of FbGraph2::Post
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Television do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
describe '#television' do
|
|
6
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
7
|
+
it 'should return an Array of FbGraph2::Page' do
|
|
8
|
+
pages = mock_graph :get, 'me/television', 'user/television', access_token: 'token' do
|
|
9
|
+
me.television
|
|
10
|
+
end
|
|
11
|
+
pages.should_not be_blank
|
|
12
|
+
pages.each do |page|
|
|
13
|
+
page.should be_instance_of FbGraph2::Page
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Edge::Videos do
|
|
4
|
+
context 'included in User' do
|
|
5
|
+
let(:me) { FbGraph2::User.me('token') }
|
|
6
|
+
|
|
7
|
+
describe '#videos' do
|
|
8
|
+
it 'should return an Array of FbGraph2::Video' do
|
|
9
|
+
videos = mock_graph :get, 'me/videos', 'user/videos', access_token: 'token' do
|
|
10
|
+
me.videos
|
|
11
|
+
end
|
|
12
|
+
videos.should_not be_blank
|
|
13
|
+
videos.each do |video|
|
|
14
|
+
video.should be_instance_of FbGraph2::Video
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe '#video!' do
|
|
20
|
+
it do
|
|
21
|
+
video = mock_graph :post, 'me/videos', 'success_with_id', access_token: 'token' do
|
|
22
|
+
me.video! source: File.new(__FILE__), message: 'hello'
|
|
23
|
+
end
|
|
24
|
+
video.should be_instance_of FbGraph2::Video
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::RequestFilter::Authenticator do
|
|
4
|
+
let(:klass) { FbGraph2::RequestFilter::Authenticator }
|
|
5
|
+
|
|
6
|
+
let(:endpoint) { 'https://graph.facebook.com/matake' }
|
|
7
|
+
let(:request) { HTTP::Message.new_request(:get, URI.parse(endpoint)) }
|
|
8
|
+
let(:request_filter) { klass.new token }
|
|
9
|
+
|
|
10
|
+
context 'when String given' do
|
|
11
|
+
let(:token) { 'token' }
|
|
12
|
+
it do
|
|
13
|
+
request_filter.filter_request(request)
|
|
14
|
+
request.header["Authorization"].should == ["Bearer #{token}"]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context 'when Rack::OAuth2::AccessToken::Bearer given' do
|
|
19
|
+
let(:token) { Rack::OAuth2::AccessToken::Bearer.new access_token: 'token' }
|
|
20
|
+
it do
|
|
21
|
+
request_filter.filter_request(request)
|
|
22
|
+
request.header["Authorization"].should == ["Bearer #{token.access_token}"]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::RequestFilter::Debugger do
|
|
4
|
+
let(:endpoint) { 'https://graph.facebook.com/matake' }
|
|
5
|
+
let(:request) { HTTP::Message.new_request(:get, URI.parse(endpoint)) }
|
|
6
|
+
let(:response) { HTTP::Message.new_response({:hello => 'world'}.to_json) }
|
|
7
|
+
let(:request_filter) { FbGraph2::RequestFilter::Debugger.new }
|
|
8
|
+
|
|
9
|
+
describe '#filter_request' do
|
|
10
|
+
it 'should log request' do
|
|
11
|
+
[
|
|
12
|
+
"======= [FbGraph2] API REQUEST STARTED =======",
|
|
13
|
+
request.dump
|
|
14
|
+
].each do |output|
|
|
15
|
+
expect(FbGraph2.logger).to receive(:info).with output
|
|
16
|
+
end
|
|
17
|
+
request_filter.filter_request(request)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#filter_response' do
|
|
22
|
+
it 'should log response' do
|
|
23
|
+
[
|
|
24
|
+
"--------------------------------------------------",
|
|
25
|
+
response.dump,
|
|
26
|
+
"======= [FbGraph2] API REQUEST FINISHED ======="
|
|
27
|
+
].each do |output|
|
|
28
|
+
expect(FbGraph2.logger).to receive(:info).with output
|
|
29
|
+
end
|
|
30
|
+
request_filter.filter_response(request, response)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/spec/fb_graph2/user_spec.rb
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FbGraph2::Util do
|
|
4
|
+
describe '.as_identifier' do
|
|
5
|
+
context 'when FbGraph2::Node given' do
|
|
6
|
+
it do
|
|
7
|
+
FbGraph2::Util.as_identifier(
|
|
8
|
+
FbGraph2::Node.new 'object_id'
|
|
9
|
+
).should == 'object_id'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context 'when String given' do
|
|
14
|
+
it do
|
|
15
|
+
FbGraph2::Util.as_identifier('object_id').should == 'object_id'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"category": "Business",
|
|
3
|
+
"daily_active_users": "10000",
|
|
4
|
+
"daily_active_users_rank": 1215,
|
|
5
|
+
"description": "A tool to help browse objects within the Facebook Graph API, manage permissions, obtain access tokens and learn how it all works.",
|
|
6
|
+
"icon_url": "https://fbcdn-photos-a-a.akamaihd.net/hphotos-ak-xpa1/t39.2081-0/851576_646264348772288_612357246_n.png",
|
|
7
|
+
"link": "https://www.facebook.com/apps/application.php?id=145634995501895",
|
|
8
|
+
"logo_url": "https://fbcdn-photos-a-a.akamaihd.net/hphotos-ak-xpa1/t39.2081-0/p75x75/851563_646263475439042_787584105_n.png",
|
|
9
|
+
"monthly_active_users": "500000",
|
|
10
|
+
"monthly_active_users_rank": 432,
|
|
11
|
+
"name": "Graph API Explorer",
|
|
12
|
+
"subcategory": "General",
|
|
13
|
+
"weekly_active_users": "100000",
|
|
14
|
+
"id": "145634995501895"
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"name": "Nov Matake",
|
|
4
|
+
"role": "MANAGER",
|
|
5
|
+
"perms": ["ADMINISTER", "EDIT_PROFILE", "CREATE_CONTENT", "MODERATE_CONTENT", "CREATE_ADS", "BASIC_ADMIN"],
|
|
6
|
+
"id": "10152411392127277"
|
|
7
|
+
}],
|
|
8
|
+
"paging": {
|
|
9
|
+
"next": "https://graph.facebook.com/v2.0/140478125968442/admins?limit=5000&offset=5000&__after_id=enc_AewHp5mZW0v4ZorlBTo4lsBccesXKfIJsKvOM-Qb268XDhHwKtZnhOhNwXWSun5KdHE"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Jr Nov",
|
|
5
|
+
"id": "1575327134"
|
|
6
|
+
}
|
|
7
|
+
],
|
|
8
|
+
"paging": {
|
|
9
|
+
"next": "https://graph.facebook.com/v2.0/117513961602338/blocked?limit=5000&offset=5000&__after_id=enc_AewU3hSo5zqbS5KA0i0lJYmPrLn57SMSo645aYB7BTPg1PSawPvlM9mRI_3Y_dcpeDI"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"id": "546071975451512",
|
|
4
|
+
"created_time": "2013-07-05T02:04:43+0000",
|
|
5
|
+
"description": "Big Guest from MIT-KIT",
|
|
6
|
+
"end_time": "2013-06-26T19:00:00+0000",
|
|
7
|
+
"from": {
|
|
8
|
+
"category": "Community",
|
|
9
|
+
"name": "Identity Conference #idcon",
|
|
10
|
+
"id": "367989543259757"
|
|
11
|
+
},
|
|
12
|
+
"start_time": "2013-06-26T19:00:00+0000",
|
|
13
|
+
"title": "idcon satellite",
|
|
14
|
+
"updated_time": "2013-07-05T02:04:43+0000"
|
|
15
|
+
}],
|
|
16
|
+
"paging": {
|
|
17
|
+
"next": "https://graph.facebook.com/v2.0/367989543259757/milestones?limit=5000&offset=5000&__after_id=enc_Aex6DrtZcpP_AZjou_LFSynIQJzuO-LR4zoj2GU-WQO3StnFciL5I6GVJ2Nlj5-6C50JJSpZnn5O-zkuPXcU4DAC"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"id": "140478125968442_881790788503835",
|
|
4
|
+
"from": {
|
|
5
|
+
"category": "Community organization",
|
|
6
|
+
"name": "OAuth.jp",
|
|
7
|
+
"id": "140478125968442"
|
|
8
|
+
},
|
|
9
|
+
"story": "OAuth.jp shared a link.",
|
|
10
|
+
"story_tags": {
|
|
11
|
+
"0": [{
|
|
12
|
+
"id": "140478125968442",
|
|
13
|
+
"name": "OAuth.jp",
|
|
14
|
+
"offset": 0,
|
|
15
|
+
"length": 8,
|
|
16
|
+
"type": "page"
|
|
17
|
+
}]
|
|
18
|
+
},
|
|
19
|
+
"link": "http://oauth.jp/blog/2014/05/09/what-happens-when-oauth2-code-leaked/",
|
|
20
|
+
"name": "OAuth 2.0 の code は漏れても大丈夫ってホント!? - OAuth.jp",
|
|
21
|
+
"caption": "oauth.jp",
|
|
22
|
+
"description": "昨日のCovert Redirect で Query 漏れるケースもある!?やOAuth 2.0 の脆弱性 (!?) “Covert Redirect” とはにあるように、OAuth 2.0 の code が漏れちゃうことも、ありえます。 漏れないためにやるべきことは、 …",
|
|
23
|
+
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
|
|
24
|
+
"actions": [{
|
|
25
|
+
"name": "Comment",
|
|
26
|
+
"link": "https://www.facebook.com/140478125968442/posts/881790788503835"
|
|
27
|
+
}, {
|
|
28
|
+
"name": "Like",
|
|
29
|
+
"link": "https://www.facebook.com/140478125968442/posts/881790788503835"
|
|
30
|
+
}],
|
|
31
|
+
"privacy": {
|
|
32
|
+
"description": "Public",
|
|
33
|
+
"value": "EVERYONE",
|
|
34
|
+
"friends": "",
|
|
35
|
+
"networks": "",
|
|
36
|
+
"allow": "",
|
|
37
|
+
"deny": ""
|
|
38
|
+
},
|
|
39
|
+
"type": "link",
|
|
40
|
+
"status_type": "shared_story",
|
|
41
|
+
"created_time": "2014-05-09T02:18:54+0000",
|
|
42
|
+
"updated_time": "2014-05-09T02:18:54+0000",
|
|
43
|
+
"is_published": true,
|
|
44
|
+
"likes": {
|
|
45
|
+
"data": [{
|
|
46
|
+
"id": "799980330042786",
|
|
47
|
+
"name": "Nobuyuki Tetsuka"
|
|
48
|
+
}, {
|
|
49
|
+
"id": "671955032839764",
|
|
50
|
+
"name": "Naohiro Fujie"
|
|
51
|
+
}, {
|
|
52
|
+
"id": "514441882016076",
|
|
53
|
+
"name": "Shouji Ohara"
|
|
54
|
+
}],
|
|
55
|
+
"paging": {
|
|
56
|
+
"cursors": {
|
|
57
|
+
"after": "NTE0NDQxODgyMDE2MDc2",
|
|
58
|
+
"before": "Nzk5OTgwMzMwMDQyNzg2"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}],
|
|
63
|
+
"paging": {
|
|
64
|
+
"previous": "https://graph.facebook.com/v2.0/140478125968442/promotable_posts?limit=25&since=1399601934",
|
|
65
|
+
"next": "https://graph.facebook.com/v2.0/140478125968442/promotable_posts?limit=25&until=1340970652"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"id": "689134294485152_695439827187932",
|
|
4
|
+
"from": {
|
|
5
|
+
"id": "689134294485152",
|
|
6
|
+
"name": "Shunya Iriki"
|
|
7
|
+
},
|
|
8
|
+
"story": "Shunya Iriki shared a link.",
|
|
9
|
+
"story_tags": {
|
|
10
|
+
"0": [{
|
|
11
|
+
"id": "689134294485152",
|
|
12
|
+
"name": "Shunya Iriki",
|
|
13
|
+
"offset": 0,
|
|
14
|
+
"length": 12,
|
|
15
|
+
"type": "user"
|
|
16
|
+
}]
|
|
17
|
+
},
|
|
18
|
+
"picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQCtEdPdezKIoUxo&w=154&h=154&url=http%3A%2F%2Fi.yimg.jp%2Fi%2Fdocs%2Frelease%2Ffbicon.jpg",
|
|
19
|
+
"link": "http://docs.yahoo.co.jp/docs/info/terms/chapter1.html#cf2nd",
|
|
20
|
+
"name": "ヤフー株式会社 - サービス利用規約 第1編 基本ガイドライン",
|
|
21
|
+
"caption": "docs.yahoo.co.jp",
|
|
22
|
+
"description": "Yahoo! JAPANのサービス利用規約、第1編 基本ガイドラインは当社のサービスをご利用になるすべての方に共通して適用されます。",
|
|
23
|
+
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
|
|
24
|
+
"actions": [{
|
|
25
|
+
"name": "Comment",
|
|
26
|
+
"link": "https://www.facebook.com/100001657627507/posts/695439827187932"
|
|
27
|
+
}, {
|
|
28
|
+
"name": "Like",
|
|
29
|
+
"link": "https://www.facebook.com/100001657627507/posts/695439827187932"
|
|
30
|
+
}],
|
|
31
|
+
"privacy": {
|
|
32
|
+
"value": ""
|
|
33
|
+
},
|
|
34
|
+
"type": "link",
|
|
35
|
+
"status_type": "shared_story",
|
|
36
|
+
"application": {
|
|
37
|
+
"name": "Facebook for iPhone",
|
|
38
|
+
"namespace": "fbiphone",
|
|
39
|
+
"id": "6628568379"
|
|
40
|
+
},
|
|
41
|
+
"created_time": "2014-06-02T12:46:26+0000",
|
|
42
|
+
"updated_time": "2014-06-02T12:46:26+0000"
|
|
43
|
+
}],
|
|
44
|
+
"paging": {
|
|
45
|
+
"cursors": {
|
|
46
|
+
"after": "Njk1NDM5ODI3MTg3OTMy",
|
|
47
|
+
"before": "Njk1NDM5ODI3MTg3OTMy"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"id": "10150407675002277",
|
|
4
|
+
"from": {
|
|
5
|
+
"id": "579612276",
|
|
6
|
+
"name": "Nov Matake"
|
|
7
|
+
},
|
|
8
|
+
"start_time": "2011-11-09T08:04:58+0000",
|
|
9
|
+
"end_time": "2011-11-09T08:04:58+0000",
|
|
10
|
+
"publish_time": "2011-11-09T08:04:58+0000",
|
|
11
|
+
"application": {
|
|
12
|
+
"name": "gem sample",
|
|
13
|
+
"namespace": "fbgraphsample",
|
|
14
|
+
"id": "134145643294322"
|
|
15
|
+
},
|
|
16
|
+
"data": {
|
|
17
|
+
"achievement": {
|
|
18
|
+
"id": "10150310611431721",
|
|
19
|
+
"url": "http://fbgraphsample.heroku.com/achievements/1",
|
|
20
|
+
"type": "game.achievement",
|
|
21
|
+
"title": "1st Achievement"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"type": "games.achieves",
|
|
25
|
+
"no_feed_story": false,
|
|
26
|
+
"likes": {
|
|
27
|
+
"count": 0,
|
|
28
|
+
"can_like": true,
|
|
29
|
+
"user_likes": false
|
|
30
|
+
},
|
|
31
|
+
"comments": {
|
|
32
|
+
"count": 0,
|
|
33
|
+
"can_comment": true,
|
|
34
|
+
"comment_order": "chronological"
|
|
35
|
+
}
|
|
36
|
+
}],
|
|
37
|
+
"paging": {
|
|
38
|
+
"next": "https://graph.facebook.com/v2.0/579612276/achievements?limit=25&offset=25&__after_id=enc_AeyhCSdwSdwIMz2Kbpibnp2MZgYC1gasXThstsCJgxJdxwL9V_ss1OPBDnrxUgpTqAe1QOHjq-un-45-IJXJFrLv"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"category": "Interest",
|
|
4
|
+
"name": "Mobile Hack Tokyo",
|
|
5
|
+
"created_time": "2012-03-01T00:30:09+0000",
|
|
6
|
+
"id": "253431701402959"
|
|
7
|
+
}, {
|
|
8
|
+
"category": "Software",
|
|
9
|
+
"name": "Rack::OAuth2",
|
|
10
|
+
"created_time": "2011-06-23T10:32:47+0000",
|
|
11
|
+
"id": "141477809244105"
|
|
12
|
+
}, {
|
|
13
|
+
"category": "Non-profit organization",
|
|
14
|
+
"name": "OpenID Foundation Japan",
|
|
15
|
+
"created_time": "2011-06-23T04:53:40+0000",
|
|
16
|
+
"id": "157574337644417"
|
|
17
|
+
}, {
|
|
18
|
+
"category": "Internet/software",
|
|
19
|
+
"name": "SocialWeb Japan",
|
|
20
|
+
"created_time": "2011-04-26T04:54:13+0000",
|
|
21
|
+
"id": "150730961633"
|
|
22
|
+
}, {
|
|
23
|
+
"category": "Community organization",
|
|
24
|
+
"name": "OAuth.jp",
|
|
25
|
+
"created_time": "2011-01-05T00:27:02+0000",
|
|
26
|
+
"id": "140478125968442"
|
|
27
|
+
}, {
|
|
28
|
+
"category": "Software",
|
|
29
|
+
"name": "FbGraph",
|
|
30
|
+
"created_time": "2010-04-30T06:48:21+0000",
|
|
31
|
+
"id": "117513961602338"
|
|
32
|
+
}],
|
|
33
|
+
"paging": {
|
|
34
|
+
"next": "https://graph.facebook.com/v2.0/579612276/activities?limit=25&offset=25&__after_id=enc_AewISXs8Uhe2pwegtVsWC8GFmzAWEKKFzGcJoZ-UJa4MA_wFfCIRKFaQMJkS6U5WTdiSKw3G3EvlyDir1upNCBop"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"id": "532912916729105",
|
|
4
|
+
"from": {
|
|
5
|
+
"category": "Software",
|
|
6
|
+
"name": "FbGraph",
|
|
7
|
+
"id": "117513961602338"
|
|
8
|
+
},
|
|
9
|
+
"name": "Timeline Photos",
|
|
10
|
+
"link": "https://www.facebook.com/album.php?fbid=532912916729105&id=117513961602338&aid=116544",
|
|
11
|
+
"privacy": "everyone",
|
|
12
|
+
"type": "wall",
|
|
13
|
+
"created_time": "2013-02-16T13:23:10+0000",
|
|
14
|
+
"updated_time": "2013-02-16T13:23:10+0000",
|
|
15
|
+
"can_upload": false
|
|
16
|
+
}],
|
|
17
|
+
"paging": {
|
|
18
|
+
"cursors": {
|
|
19
|
+
"after": "MjEwNDcxNDkyMzA2NTg0",
|
|
20
|
+
"before": "NTMyOTEyOTE2NzI5MTA1"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": [{
|
|
3
|
+
"category": "Book",
|
|
4
|
+
"name": "Predictably Irrational",
|
|
5
|
+
"created_time": "2011-07-27T15:49:06+0000",
|
|
6
|
+
"id": "113167718696752"
|
|
7
|
+
}],
|
|
8
|
+
"paging": {
|
|
9
|
+
"next": "https://graph.facebook.com/v2.0/579612276/books?limit=25&offset=25&__after_id=enc_AewjHX22qV_-BoIxoRMWHPno7BxZHunbqYgaxlHlJnH0x_Gza1bYpFD6V7Vve1HL-21x7kD5E_3QMLzdjM9pmK_f"
|
|
10
|
+
}
|
|
11
|
+
}
|