mirror of
https://github.com/nov/fb_graph2
synced 2023-03-27 23:22:15 -04:00
cached likes & comments, and more tests
This commit is contained in:
parent
6a04c2a9e8
commit
ffae61e531
15 changed files with 1024 additions and 9 deletions
|
|
@ -1,8 +1,19 @@
|
|||
module FbGraph2
|
||||
class Edge
|
||||
module Comments
|
||||
def initialize(id, attributes)
|
||||
super
|
||||
if attributes.include?(:comments)
|
||||
@_cached_comments = Collection.new attributes[:comments]
|
||||
end
|
||||
end
|
||||
|
||||
def comments(params = {})
|
||||
comments = self.edge :comments, params
|
||||
comments = if @_cached_comments.present? && params.blank?
|
||||
@_cached_comments
|
||||
else
|
||||
self.edge :comments, params
|
||||
end
|
||||
comments.collect do |comment|
|
||||
Comment.new(comment[:id], comment).authenticate self.access_token
|
||||
end
|
||||
|
|
|
|||
|
|
@ -16,8 +16,19 @@ module FbGraph2
|
|||
end
|
||||
|
||||
module LikeeContext
|
||||
def initialize(id, attributes)
|
||||
super
|
||||
if attributes.include?(:likes)
|
||||
@_cached_likes = Collection.new attributes[:likes]
|
||||
end
|
||||
end
|
||||
|
||||
def likes(params = {})
|
||||
users = self.edge :likes, params
|
||||
users = if @_cached_likes.present? && params.blank?
|
||||
@_cached_likes
|
||||
else
|
||||
self.edge :likes, params
|
||||
end
|
||||
users.collect do |user|
|
||||
User.new(user[:id], user).authenticate self.access_token
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
module FbGraph2
|
||||
class Photo < Node
|
||||
include Edge::Comments
|
||||
include Edge::Likes::LikeeContext
|
||||
|
||||
register_attributes(
|
||||
raw: [
|
||||
:backdated_time_granularity, :height, :icon, :link, :name, :page_story_id, :picture, :position, :source, :width,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
module FbGraph2
|
||||
class Post < Node
|
||||
include Edge::Comments
|
||||
include Edge::Likes::LikeeContext
|
||||
|
||||
register_attributes(
|
||||
|
|
|
|||
|
|
@ -4,14 +4,16 @@ describe FbGraph2::Edge::Accounts do
|
|||
context 'included in User' do
|
||||
describe '#accounts' do
|
||||
let(:me) { FbGraph2::User.me('token') }
|
||||
it 'should return pages with page token' do
|
||||
it 'should return an Array of FbGraph2::Page with page token' do
|
||||
accounts = mock_graph :get, 'me/accounts', 'user/accounts', access_token: 'token' do
|
||||
me.accounts
|
||||
end
|
||||
account = accounts.first
|
||||
account.should be_instance_of FbGraph2::Page
|
||||
account.name.should == 'Identity Conference #idcon'
|
||||
account.access_token.should == 'page_token'
|
||||
accounts.should_not be_blank
|
||||
accounts.each do |account|
|
||||
account.should be_instance_of FbGraph2::Page
|
||||
account.access_token.should == 'page_token'
|
||||
end
|
||||
accounts.first.name.should == 'Identity Conference #idcon'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
33
spec/fb_graph2/edge/comments_spec.rb
Normal file
33
spec/fb_graph2/edge/comments_spec.rb
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe FbGraph2::Edge::Comments do
|
||||
context 'included in Post' do
|
||||
let(:post) { FbGraph2::Post.new('post_id').authenticate('token') }
|
||||
|
||||
describe '#comments' do
|
||||
context 'when cached' do
|
||||
let(:fetched) do
|
||||
mock_graph :get, 'post_id', 'post/liked_and_commented', access_token: 'token' do
|
||||
post.fetch
|
||||
end
|
||||
end
|
||||
|
||||
context 'without params' do
|
||||
it 'should not call API' do
|
||||
expect do
|
||||
fetched.comments
|
||||
end.not_to request_to "#{fetched.id}/comments"
|
||||
end
|
||||
end
|
||||
|
||||
context 'with params' do
|
||||
it 'should call API' do
|
||||
expect do
|
||||
fetched.comments no_cache: true
|
||||
end.to request_to "#{fetched.id}/comments"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -5,7 +5,15 @@ describe FbGraph2::Edge::Feed do
|
|||
let(:me) { FbGraph2::User.me('token') }
|
||||
|
||||
describe '#feed' do
|
||||
it :TODO
|
||||
it 'should return an Array of FbGraph2::Post' do
|
||||
posts = mock_graph :get, 'me/feed', 'user/feed', access_token: 'token' do
|
||||
me.feed
|
||||
end
|
||||
posts.should_not be_blank
|
||||
posts.each do |post|
|
||||
post.should be_instance_of FbGraph2::Post
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'feed!' do
|
||||
|
|
|
|||
33
spec/fb_graph2/edge/likes_spec.rb
Normal file
33
spec/fb_graph2/edge/likes_spec.rb
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe FbGraph2::Edge::Likes do
|
||||
context 'included in Post' do
|
||||
let(:post) { FbGraph2::Post.new('post_id').authenticate('token') }
|
||||
|
||||
describe '#comments' do
|
||||
context 'when cached' do
|
||||
let(:fetched) do
|
||||
mock_graph :get, 'post_id', 'post/liked_and_commented', access_token: 'token' do
|
||||
post.fetch
|
||||
end
|
||||
end
|
||||
|
||||
context 'without params' do
|
||||
it 'should not call API' do
|
||||
expect do
|
||||
fetched.likes
|
||||
end.not_to request_to "#{fetched.id}/likes"
|
||||
end
|
||||
end
|
||||
|
||||
context 'with params' do
|
||||
it 'should call API' do
|
||||
expect do
|
||||
fetched.likes no_cache: true
|
||||
end.to request_to "#{fetched.id}/likes"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
29
spec/fb_graph2/edge/photos_spec.rb
Normal file
29
spec/fb_graph2/edge/photos_spec.rb
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe FbGraph2::Edge::Photos do
|
||||
context 'included in User' do
|
||||
let(:me) { FbGraph2::User.me('token') }
|
||||
|
||||
describe '#photos' do
|
||||
it 'should return an Array of FbGraph2::Photo' do
|
||||
photos = mock_graph :get, 'me/photos', 'user/photos', access_token: 'token' do
|
||||
me.photos
|
||||
end
|
||||
photos.should_not be_blank
|
||||
photos.each do |photo|
|
||||
photo.should be_instance_of FbGraph2::Photo
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'photo!' do
|
||||
it 'should return FbGraph2::Post' do
|
||||
photo = mock_graph :post, 'me/photos', 'success_with_id', access_token: 'token' do
|
||||
me.photo! url: 'http://example.com/me.png'
|
||||
end
|
||||
photo.should be_instance_of FbGraph2::Photo
|
||||
photo.id.should == 'created_object_id'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -34,6 +34,14 @@ describe FbGraph2::Node do
|
|||
its(:access_token) { should == 'access_token' }
|
||||
end
|
||||
|
||||
describe '#destroy' do
|
||||
it 'should call API with DELETE method' do
|
||||
expect do
|
||||
instance.destroy
|
||||
end.to request_to 'identifier', :delete
|
||||
end
|
||||
end
|
||||
|
||||
describe '#handle_response' do
|
||||
context 'when error' do
|
||||
context 'when valid json' do
|
||||
|
|
|
|||
59
spec/mock_json/post/liked_and_commented.json
Normal file
59
spec/mock_json/post/liked_and_commented.json
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"id": "579612276_10152473646047277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"message": "test",
|
||||
"actions": [{
|
||||
"name": "Comment",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152473646047277"
|
||||
}, {
|
||||
"name": "Like",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152473646047277"
|
||||
}],
|
||||
"privacy": {
|
||||
"description": "Your friends",
|
||||
"value": "ALL_FRIENDS",
|
||||
"friends": "",
|
||||
"networks": "",
|
||||
"allow": "",
|
||||
"deny": ""
|
||||
},
|
||||
"type": "status",
|
||||
"status_type": "mobile_status_update",
|
||||
"created_time": "2014-05-30T06:13:26+0000",
|
||||
"updated_time": "2014-05-30T06:13:30+0000",
|
||||
"likes": {
|
||||
"data": [{
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"after": "NTc5NjEyMjc2",
|
||||
"before": "NTc5NjEyMjc2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"comments": {
|
||||
"data": [{
|
||||
"id": "10152473646047277_10152473646112277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"message": "test",
|
||||
"can_remove": true,
|
||||
"created_time": "2014-05-30T06:13:30+0000",
|
||||
"like_count": 0,
|
||||
"user_likes": false
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"after": "MQ==",
|
||||
"before": "MQ=="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1
spec/mock_json/true.json
Normal file
1
spec/mock_json/true.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
true
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
}, {
|
||||
"category": "Non-profit organization",
|
||||
"name": "OpenID Foundation Japan",
|
||||
"access_token": "access_token",
|
||||
"access_token": "page_token",
|
||||
"perms": ["ADMINISTER", "EDIT_PROFILE", "CREATE_CONTENT", "MODERATE_CONTENT", "CREATE_ADS", "BASIC_ADMIN"],
|
||||
"id": "157574337644417"
|
||||
}],
|
||||
|
|
|
|||
274
spec/mock_json/user/feed.json
Normal file
274
spec/mock_json/user/feed.json
Normal file
|
|
@ -0,0 +1,274 @@
|
|||
{
|
||||
"data": [{
|
||||
"id": "579612276_10152473214157277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"story": "Nov Matake likes a photo.",
|
||||
"story_tags": {
|
||||
"0": [{
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"offset": 0,
|
||||
"length": 10,
|
||||
"type": "user"
|
||||
}]
|
||||
},
|
||||
"privacy": {
|
||||
"value": ""
|
||||
},
|
||||
"type": "status",
|
||||
"created_time": "2014-05-30T00:41:24+0000",
|
||||
"updated_time": "2014-05-30T00:41:24+0000"
|
||||
}, {
|
||||
"id": "579612276_10152473191982277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"message": "ビッグデータとひわいっち",
|
||||
"story": "Nov Matake shared Keisuke Hiwatashi's photo.",
|
||||
"story_tags": {
|
||||
"0": [{
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"offset": 0,
|
||||
"length": 10,
|
||||
"type": "user"
|
||||
}],
|
||||
"18": [{
|
||||
"id": "674146975973023",
|
||||
"name": "Keisuke Hiwatashi",
|
||||
"offset": 18,
|
||||
"length": 17,
|
||||
"type": "user"
|
||||
}]
|
||||
},
|
||||
"picture": "https://fbcdn-photos-h-a.akamaihd.net/hphotos-ak-xfp1/t1.0-0/10325169_677983408922713_1895639973177548237_s.jpg",
|
||||
"link": "https://www.facebook.com/photo.php?fbid=677983408922713&set=a.150687431652316.43478.100001331809083&type=1",
|
||||
"name": "Mobile Uploads",
|
||||
"caption": "西日本新聞の三面広告に。角川書店さんありがとう^ ^\n\n今晩はグロービス東京で講演です。 — at ANA 福岡空港 - Fukuoka Airport.",
|
||||
"properties": [{
|
||||
"name": "By",
|
||||
"text": "Keisuke Hiwatashi",
|
||||
"href": "https://www.facebook.com/keisuke.hiwatashi.9"
|
||||
}],
|
||||
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
|
||||
"actions": [{
|
||||
"name": "Comment",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152473191982277"
|
||||
}, {
|
||||
"name": "Like",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152473191982277"
|
||||
}],
|
||||
"privacy": {
|
||||
"description": "Your friends",
|
||||
"value": "ALL_FRIENDS",
|
||||
"friends": "",
|
||||
"networks": "",
|
||||
"allow": "",
|
||||
"deny": ""
|
||||
},
|
||||
"type": "photo",
|
||||
"status_type": "shared_story",
|
||||
"object_id": "677983408922713",
|
||||
"application": {
|
||||
"name": "Facebook for iPhone",
|
||||
"namespace": "fbiphone",
|
||||
"id": "6628568379"
|
||||
},
|
||||
"created_time": "2014-05-30T00:21:08+0000",
|
||||
"updated_time": "2014-05-30T00:21:08+0000"
|
||||
}, {
|
||||
"id": "579612276_10152473186437277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"story": "Nov Matake shared a link.",
|
||||
"story_tags": {
|
||||
"0": [{
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"offset": 0,
|
||||
"length": 10,
|
||||
"type": "user"
|
||||
}]
|
||||
},
|
||||
"picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQAcHDji1ec2KqYZ&w=154&h=154&url=http%3A%2F%2Fua.nakanohito.jp%2Fua%2F%3Ffrom%3Duamb%26id%3D7932754%26mode%3Ddefault%26h%3D55529355%26rand%3Dnoscript%26guid%3DON%26url%3Dhttp%3A%2F%2Fkirik.tea-nifty.com%2Fdiary%2F2014%2F05%2Fivs-ed80.html%26eflg%3D1",
|
||||
"link": "http://ow.ly/xoEJp",
|
||||
"name": "IVS札幌でセクハラ・レイプ未遂騒ぎが勃発&インサイダー情報が乱舞: やまもといちろうBLOG(ブログ)",
|
||||
"caption": "kirik.tea-nifty.com",
|
||||
"description": " 毎回いろんな乱痴気騒ぎを起こすIVS(インフィニティー ベンチャーズ サミット)ですが、さすがに今回は警察沙汰に近い状況になったようなのでピックアップするわけですけど。",
|
||||
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
|
||||
"actions": [{
|
||||
"name": "Comment",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152473186437277"
|
||||
}, {
|
||||
"name": "Like",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152473186437277"
|
||||
}],
|
||||
"privacy": {
|
||||
"description": "Your friends",
|
||||
"value": "ALL_FRIENDS",
|
||||
"friends": "",
|
||||
"networks": "",
|
||||
"allow": "",
|
||||
"deny": ""
|
||||
},
|
||||
"type": "link",
|
||||
"status_type": "shared_story",
|
||||
"application": {
|
||||
"name": "Facebook for iPhone",
|
||||
"namespace": "fbiphone",
|
||||
"id": "6628568379"
|
||||
},
|
||||
"created_time": "2014-05-30T00:15:34+0000",
|
||||
"updated_time": "2014-05-30T00:15:34+0000",
|
||||
"shares": {
|
||||
"count": 1
|
||||
},
|
||||
"likes": {
|
||||
"data": [{
|
||||
"id": "689134294485152",
|
||||
"name": "Shunya Iriki"
|
||||
}, {
|
||||
"id": "1486426304903512",
|
||||
"name": "Masato Nagai"
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"after": "MTQ4NjQyNjMwNDkwMzUxMg==",
|
||||
"before": "Njg5MTM0Mjk0NDg1MTUy"
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id": "579612276_10152471638637277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"message": "じわじわくる",
|
||||
"story": "Nov Matake shared Yoichi Hagiwara's photo.",
|
||||
"story_tags": {
|
||||
"0": [{
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"offset": 0,
|
||||
"length": 10,
|
||||
"type": "user"
|
||||
}],
|
||||
"18": [{
|
||||
"id": "636860593058872",
|
||||
"name": "Yoichi Hagiwara",
|
||||
"offset": 18,
|
||||
"length": 15,
|
||||
"type": "user"
|
||||
}]
|
||||
},
|
||||
"picture": "https://fbcdn-photos-b-a.akamaihd.net/hphotos-ak-xfp1/t1.0-0/10410479_636298869781711_8967036710690476822_s.jpg",
|
||||
"link": "https://www.facebook.com/photo.php?fbid=636298869781711&set=a.168178316593771.41312.100002048127511&type=1",
|
||||
"name": "Timeline Photos",
|
||||
"caption": "辛口パネルディスカッション — with Kazu Yamaji and Koji Ando.",
|
||||
"properties": [{
|
||||
"name": "By",
|
||||
"text": "Yoichi Hagiwara",
|
||||
"href": "https://www.facebook.com/yoichi.hagiwara.98"
|
||||
}],
|
||||
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
|
||||
"actions": [{
|
||||
"name": "Comment",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152471638637277"
|
||||
}, {
|
||||
"name": "Like",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152471638637277"
|
||||
}],
|
||||
"privacy": {
|
||||
"description": "Your friends",
|
||||
"value": "ALL_FRIENDS",
|
||||
"friends": "",
|
||||
"networks": "",
|
||||
"allow": "",
|
||||
"deny": ""
|
||||
},
|
||||
"type": "photo",
|
||||
"status_type": "shared_story",
|
||||
"object_id": "636298869781711",
|
||||
"application": {
|
||||
"name": "Photos",
|
||||
"id": "2305272732"
|
||||
},
|
||||
"created_time": "2014-05-29T08:30:07+0000",
|
||||
"updated_time": "2014-05-29T08:30:07+0000"
|
||||
}, {
|
||||
"id": "579612276_10152470156827277",
|
||||
"from": {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake"
|
||||
},
|
||||
"story": "Nov Matake shared a link.",
|
||||
"story_tags": {
|
||||
"0": [{
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"offset": 0,
|
||||
"length": 10,
|
||||
"type": "user"
|
||||
}]
|
||||
},
|
||||
"picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQDQyx3PnnIPoGqZ&w=154&h=154&url=http%3A%2F%2Fc002.ocn.ne.jp%2Fimg%2Flogo_nttcommunications_001.gif",
|
||||
"link": "http://mypage.ocn.ne.jp/sorry/index.html",
|
||||
"name": "お詫び | マイページ",
|
||||
"caption": "mypage.ocn.ne.jp",
|
||||
"description": "NTTコミュニケーションズでは、多くの方に当社ホームページを利用していただくため、アクセシビリティに配慮したホームページの制作を行っております。 アクセシビリティの実装方法としてスタイルシートを使用しております。お客さまが使用されているブラウザはスタイルシート非対応のブラウザのため、表示結果が異なっておりますが、情報そのものは問題なくご利用いただけます。",
|
||||
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
|
||||
"actions": [{
|
||||
"name": "Comment",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152470156827277"
|
||||
}, {
|
||||
"name": "Like",
|
||||
"link": "https://www.facebook.com/579612276/posts/10152470156827277"
|
||||
}],
|
||||
"privacy": {
|
||||
"description": "Your friends",
|
||||
"value": "ALL_FRIENDS",
|
||||
"friends": "",
|
||||
"networks": "",
|
||||
"allow": "",
|
||||
"deny": ""
|
||||
},
|
||||
"type": "link",
|
||||
"status_type": "shared_story",
|
||||
"application": {
|
||||
"name": "Facebook for iPhone",
|
||||
"namespace": "fbiphone",
|
||||
"id": "6628568379"
|
||||
},
|
||||
"created_time": "2014-05-28T15:25:07+0000",
|
||||
"updated_time": "2014-05-28T15:25:07+0000",
|
||||
"likes": {
|
||||
"data": [{
|
||||
"id": "644436712303508",
|
||||
"name": "Masaru Kurahayashi"
|
||||
}, {
|
||||
"id": "10203901352238213",
|
||||
"name": "Shuji Yamaguchi"
|
||||
}, {
|
||||
"id": "10203023651344197",
|
||||
"name": "Atsuyoshi Shimazu"
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"after": "MTAyMDMwMjM2NTEzNDQxOTc=",
|
||||
"before": "NjQ0NDM2NzEyMzAzNTA4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}],
|
||||
"paging": {
|
||||
"previous": "https://graph.facebook.com/v2.0/579612276/feed?limit=25&since=1401410484",
|
||||
"next": "https://graph.facebook.com/v2.0/579612276/feed?limit=25&until=1400651347"
|
||||
}
|
||||
}
|
||||
542
spec/mock_json/user/photos.json
Normal file
542
spec/mock_json/user/photos.json
Normal file
|
|
@ -0,0 +1,542 @@
|
|||
{
|
||||
"data": [{
|
||||
"id": "10200941627421315",
|
||||
"from": {
|
||||
"id": "10201136131123786",
|
||||
"name": "Tatsuya Katsuhara"
|
||||
},
|
||||
"name": "ID厨が白秋で肉をくらう。",
|
||||
"picture": "https://fbcdn-photos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-0/1531597_10200941627421315_1173228419_s.jpg",
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/s720x720/1531597_10200941627421315_1173228419_n.jpg",
|
||||
"height": 540,
|
||||
"width": 720,
|
||||
"images": [{
|
||||
"height": 720,
|
||||
"width": 960,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}, {
|
||||
"height": 600,
|
||||
"width": 800,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p600x600/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}, {
|
||||
"height": 480,
|
||||
"width": 640,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p480x480/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}, {
|
||||
"height": 320,
|
||||
"width": 426,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p320x320/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}, {
|
||||
"height": 540,
|
||||
"width": 720,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p180x540/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}, {
|
||||
"height": 130,
|
||||
"width": 173,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p130x130/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}, {
|
||||
"height": 225,
|
||||
"width": 300,
|
||||
"source": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p75x225/1531597_10200941627421315_1173228419_n.jpg"
|
||||
}],
|
||||
"link": "https://www.facebook.com/photo.php?fbid=10200941627421315&set=p.10200941627421315&type=1",
|
||||
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif",
|
||||
"place": {
|
||||
"id": "469658423073776",
|
||||
"name": "白秋",
|
||||
"location": {
|
||||
"city": "Shibuya-ku",
|
||||
"country": "Japan",
|
||||
"latitude": 35.6563466826,
|
||||
"longitude": 139.700998939,
|
||||
"state": "Tokyo"
|
||||
}
|
||||
},
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"updated_time": "2014-03-26T13:20:56+0000",
|
||||
"tags": {
|
||||
"data": [{
|
||||
"id": "585838138182211",
|
||||
"name": "Teruko Kaneshiro",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 44.84375,
|
||||
"y": 42.083335876465
|
||||
}, {
|
||||
"id": "644436712303508",
|
||||
"name": "Masaru Kurahayashi",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 59.0625,
|
||||
"y": 35.416667938232
|
||||
}, {
|
||||
"id": "10201136131123786",
|
||||
"name": "Tatsuya Katsuhara",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 50,
|
||||
"y": 85.83332824707
|
||||
}, {
|
||||
"id": "10203204372262716",
|
||||
"name": "Ryo Ito",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 35.46875,
|
||||
"y": 39.166667938232
|
||||
}, {
|
||||
"id": "10152167763779825",
|
||||
"name": "Hayashi Tatsuya",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 74.6875,
|
||||
"y": 39.583335876465
|
||||
}, {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 29.062503814697,
|
||||
"y": 43.333332061768
|
||||
}, {
|
||||
"id": "10152436694196416",
|
||||
"name": "Shingo Yamanaka",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 83.125,
|
||||
"y": 36.458335876465
|
||||
}, {
|
||||
"id": "10152447963434621",
|
||||
"name": "Tatsuo Kudo",
|
||||
"created_time": "2014-03-26T13:05:18+0000",
|
||||
"x": 51.718746185303,
|
||||
"y": 38.333335876465
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"before": "NTg1ODM4MTM4MTgyMjEx",
|
||||
"after": "MTAxNTI0NDc5NjM0MzQ2MjE="
|
||||
}
|
||||
}
|
||||
},
|
||||
"comments": {
|
||||
"data": [{
|
||||
"id": "10200941627421315_2590723",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-26T17:19:38+0000",
|
||||
"from": {
|
||||
"name": "Toru Yamaguchi",
|
||||
"id": "10152396860921912"
|
||||
},
|
||||
"like_count": 2,
|
||||
"message": "呼ばれてない!!!w",
|
||||
"user_likes": true
|
||||
}, {
|
||||
"id": "10200941627421315_2591238",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-26T23:10:01+0000",
|
||||
"from": {
|
||||
"name": "Tatsuya Katsuhara",
|
||||
"id": "10201136131123786"
|
||||
},
|
||||
"like_count": 2,
|
||||
"message": "僕も呼ばれてない!!!w(通りがかっただけ)\n\nファウンデーションのページに顔写真が乗ってる人が対象とのこと。",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200941627421315_2591277",
|
||||
"can_remove": true,
|
||||
"created_time": "2014-03-26T23:41:55+0000",
|
||||
"from": {
|
||||
"name": "Nov Matake",
|
||||
"id": "579612276"
|
||||
},
|
||||
"like_count": 2,
|
||||
"message": "あ!!ネコの人の横顔が!!(((( ;゚Д゚)))",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200941627421315_2591624",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-27T03:59:55+0000",
|
||||
"from": {
|
||||
"name": "Tatsuya Katsuhara",
|
||||
"id": "10201136131123786"
|
||||
},
|
||||
"like_count": 0,
|
||||
"message": "顔だしNGでしたっけ?",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200941627421315_2591626",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-27T04:00:40+0000",
|
||||
"from": {
|
||||
"name": "Ryo Ito",
|
||||
"id": "10203204372262716"
|
||||
},
|
||||
"like_count": 2,
|
||||
"message": "日本海に沈められたいようですね?",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200941627421315_2591628",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-27T04:01:36+0000",
|
||||
"from": {
|
||||
"name": "Tatsuya Katsuhara",
|
||||
"id": "10201136131123786"
|
||||
},
|
||||
"like_count": 1,
|
||||
"message": "まぁほとんど見えてないし、なんか「シェー」してるし。",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200941627421315_2591630",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-27T04:03:14+0000",
|
||||
"from": {
|
||||
"name": "Tatsuo Kudo",
|
||||
"id": "10152447963434621"
|
||||
},
|
||||
"like_count": 1,
|
||||
"message": "タグ消して早く逃げて!",
|
||||
"user_likes": false
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"before": "MQ==",
|
||||
"after": "Nw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"likes": {
|
||||
"data": [{
|
||||
"id": "685453561525864",
|
||||
"name": "Hiromitsu Iida"
|
||||
}, {
|
||||
"id": "753788224652550",
|
||||
"name": "Satoshi Watanabe"
|
||||
}, {
|
||||
"id": "657700260978684",
|
||||
"name": "Kaori Miyata"
|
||||
}, {
|
||||
"id": "10201584212239941",
|
||||
"name": "Takashi Kawasaki"
|
||||
}, {
|
||||
"id": "449004711910751",
|
||||
"name": "Sachiko Notsu"
|
||||
}, {
|
||||
"id": "471770689635333",
|
||||
"name": "田辺 めぐみ"
|
||||
}, {
|
||||
"id": "722691854464357",
|
||||
"name": "Nobuyuki Ooka"
|
||||
}, {
|
||||
"id": "550421278399580",
|
||||
"name": "Ayaya Maheno"
|
||||
}, {
|
||||
"id": "663823840353749",
|
||||
"name": "Koji Asaga"
|
||||
}, {
|
||||
"id": "633899533370033",
|
||||
"name": "Eiko Miyamae"
|
||||
}, {
|
||||
"id": "10203759427616991",
|
||||
"name": "Takeshi Takahashi"
|
||||
}, {
|
||||
"id": "10204254221381580",
|
||||
"name": "Aoi Ichiba"
|
||||
}, {
|
||||
"id": "10152851258997627",
|
||||
"name": "Takashi Shitamichi"
|
||||
}, {
|
||||
"id": "732741390109869",
|
||||
"name": "Rieko Suzuki"
|
||||
}, {
|
||||
"id": "10202979025649479",
|
||||
"name": "Akiko Orita"
|
||||
}, {
|
||||
"id": "605588959556246",
|
||||
"name": "Eduardo Casquejo Gerochi"
|
||||
}, {
|
||||
"id": "10152396860921912",
|
||||
"name": "Toru Yamaguchi"
|
||||
}, {
|
||||
"id": "780799988617330",
|
||||
"name": "Shota Kinoshita"
|
||||
}, {
|
||||
"id": "325116630972406",
|
||||
"name": "津田千穂"
|
||||
}, {
|
||||
"id": "449822611820106",
|
||||
"name": "Yoichiro Iizuka"
|
||||
}, {
|
||||
"id": "677203379011818",
|
||||
"name": "Obata Masa"
|
||||
}, {
|
||||
"id": "10202834671282088",
|
||||
"name": "Miki Tsujimoto"
|
||||
}, {
|
||||
"id": "647882965291683",
|
||||
"name": "Yasuo Okabe"
|
||||
}, {
|
||||
"id": "644436712303508",
|
||||
"name": "Masaru Kurahayashi"
|
||||
}, {
|
||||
"id": "523078074465377",
|
||||
"name": "Keisuke Kagawa"
|
||||
}],
|
||||
"paging": {
|
||||
"next": "https://graph.facebook.com/v2.0/10200941627421315/likes?pretty=1&limit=25&after=NTIzMDc4MDc0NDY1Mzc3",
|
||||
"cursors": {
|
||||
"before": "Njg1NDUzNTYxNTI1ODY0",
|
||||
"after": "NTIzMDc4MDc0NDY1Mzc3"
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"id": "10200841351194472",
|
||||
"from": {
|
||||
"id": "10201136131123786",
|
||||
"name": "Tatsuya Katsuhara"
|
||||
},
|
||||
"name": "そのままmixiのラウンジで打ち上げ。",
|
||||
"picture": "https://fbcdn-photos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-0/1897751_10200841351194472_1801438743_s.jpg",
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/s720x720/1897751_10200841351194472_1801438743_n.jpg",
|
||||
"height": 540,
|
||||
"width": 720,
|
||||
"images": [{
|
||||
"height": 720,
|
||||
"width": 960,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}, {
|
||||
"height": 600,
|
||||
"width": 800,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/p600x600/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}, {
|
||||
"height": 480,
|
||||
"width": 640,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/p480x480/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}, {
|
||||
"height": 320,
|
||||
"width": 426,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/p320x320/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}, {
|
||||
"height": 540,
|
||||
"width": 720,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/p180x540/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}, {
|
||||
"height": 130,
|
||||
"width": 173,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/p130x130/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}, {
|
||||
"height": 225,
|
||||
"width": 300,
|
||||
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xap1/t1.0-9/p75x225/1897751_10200841351194472_1801438743_n.jpg"
|
||||
}],
|
||||
"link": "https://www.facebook.com/photo.php?fbid=10200841351194472&set=p.10200841351194472&type=1",
|
||||
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif",
|
||||
"place": {
|
||||
"id": "203709096330380",
|
||||
"name": "mixi",
|
||||
"location": {
|
||||
"city": "Shibuya-ku",
|
||||
"country": "Japan",
|
||||
"latitude": 35.658331169721,
|
||||
"longitude": 139.70888632701,
|
||||
"state": "Tokyo",
|
||||
"street": "東1-2-20 住友不動産渋谷ファーストタワー7F",
|
||||
"zip": "150-0011"
|
||||
}
|
||||
},
|
||||
"created_time": "2014-03-07T14:25:30+0000",
|
||||
"updated_time": "2014-03-07T14:25:31+0000",
|
||||
"tags": {
|
||||
"data": [{
|
||||
"id": "10152447963434621",
|
||||
"name": "Tatsuo Kudo",
|
||||
"created_time": "2014-03-13T08:02:16+0000",
|
||||
"x": 35.208333333333,
|
||||
"y": 44.481481481482
|
||||
}, {
|
||||
"id": "572058479576285",
|
||||
"name": "Satoshi Yagi",
|
||||
"created_time": "2014-03-13T08:02:14+0000",
|
||||
"x": 46.597222222222,
|
||||
"y": 40.874074074074
|
||||
}, {
|
||||
"id": "677203379011818",
|
||||
"name": "Obata Masa",
|
||||
"created_time": "2014-03-13T07:56:48+0000",
|
||||
"x": 65.98193359375,
|
||||
"y": 28.95009803772
|
||||
}, {
|
||||
"id": "644436712303508",
|
||||
"name": "Masaru Kurahayashi",
|
||||
"created_time": "2014-03-13T07:56:46+0000",
|
||||
"x": 39.027778625488,
|
||||
"y": 44.674076080322
|
||||
}, {
|
||||
"id": "585838138182211",
|
||||
"name": "Teruko Kaneshiro",
|
||||
"created_time": "2014-03-07T14:26:31+0000",
|
||||
"x": 62.777774810791,
|
||||
"y": 46.237037658691
|
||||
}, {
|
||||
"id": "671955032839764",
|
||||
"name": "Naohiro Fujie",
|
||||
"created_time": "2014-03-07T14:26:31+0000",
|
||||
"x": 52.499996185303,
|
||||
"y": 45.62963104248
|
||||
}, {
|
||||
"id": "10201136131123786",
|
||||
"name": "Tatsuya Katsuhara",
|
||||
"created_time": "2014-03-07T14:25:31+0000",
|
||||
"x": 24.446300506592,
|
||||
"y": 37.896244049072
|
||||
}, {
|
||||
"id": "579612276",
|
||||
"name": "Nov Matake",
|
||||
"created_time": "2014-03-07T14:25:31+0000",
|
||||
"x": 66.40796661377,
|
||||
"y": 53.814094543457
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"before": "MTAxNTI0NDc5NjM0MzQ2MjE=",
|
||||
"after": "NTc5NjEyMjc2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"comments": {
|
||||
"data": [{
|
||||
"id": "10200841351194472_2557753",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-07T23:38:10+0000",
|
||||
"from": {
|
||||
"name": "Ryo Ito",
|
||||
"id": "10203204372262716"
|
||||
},
|
||||
"like_count": 0,
|
||||
"message": "これは良い写真",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200841351194472_2557794",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-07T23:58:24+0000",
|
||||
"from": {
|
||||
"name": "Teruko Kaneshiro",
|
||||
"id": "585838138182211"
|
||||
},
|
||||
"like_count": 2,
|
||||
"message": "カメラマンが良かったんじゃない?笑",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200841351194472_2558268",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-08T05:49:32+0000",
|
||||
"from": {
|
||||
"name": "Satoshi Yagi",
|
||||
"id": "572058479576285"
|
||||
},
|
||||
"like_count": 2,
|
||||
"message": "なんか削除されてるw",
|
||||
"user_likes": false
|
||||
}, {
|
||||
"id": "10200841351194472_2567175",
|
||||
"can_remove": false,
|
||||
"created_time": "2014-03-13T08:02:42+0000",
|
||||
"from": {
|
||||
"name": "Obata Masa",
|
||||
"id": "677203379011818"
|
||||
},
|
||||
"like_count": 1,
|
||||
"message": "楽しかったですね。\n八木さんと金城さんと富士榮さんが一つづつずれてますwww",
|
||||
"user_likes": false
|
||||
}],
|
||||
"paging": {
|
||||
"cursors": {
|
||||
"before": "MQ==",
|
||||
"after": "NA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"likes": {
|
||||
"data": [{
|
||||
"id": "1246364330",
|
||||
"name": "Kaoru Maeda"
|
||||
}, {
|
||||
"id": "511347795659717",
|
||||
"name": "Hirokazu Takahashi"
|
||||
}, {
|
||||
"id": "10201598897247208",
|
||||
"name": "石山省吾"
|
||||
}, {
|
||||
"id": "10201646502916047",
|
||||
"name": "Satoru Kanno"
|
||||
}, {
|
||||
"id": "449822611820106",
|
||||
"name": "Yoichiro Iizuka"
|
||||
}, {
|
||||
"id": "10152167763779825",
|
||||
"name": "Hayashi Tatsuya"
|
||||
}, {
|
||||
"id": "449004711910751",
|
||||
"name": "Sachiko Notsu"
|
||||
}, {
|
||||
"id": "393385770799951",
|
||||
"name": "Takumi Tanabe"
|
||||
}, {
|
||||
"id": "507142902719891",
|
||||
"name": "古谷 ゆかり"
|
||||
}, {
|
||||
"id": "572058479576285",
|
||||
"name": "Satoshi Yagi"
|
||||
}, {
|
||||
"id": "595179360590282",
|
||||
"name": "ワタナベ モリヲ"
|
||||
}, {
|
||||
"id": "565784313542838",
|
||||
"name": "Masahiko Taguchi"
|
||||
}, {
|
||||
"id": "677203379011818",
|
||||
"name": "Obata Masa"
|
||||
}, {
|
||||
"id": "561310417321029",
|
||||
"name": "Muneomi Sakuta"
|
||||
}, {
|
||||
"id": "654721794603615",
|
||||
"name": "Yukinori Kuroda"
|
||||
}, {
|
||||
"id": "471770689635333",
|
||||
"name": "田辺 めぐみ"
|
||||
}, {
|
||||
"id": "10201784235795126",
|
||||
"name": "Asako Unno"
|
||||
}, {
|
||||
"id": "1592975120926614",
|
||||
"name": "Tomio Fujii"
|
||||
}, {
|
||||
"id": "10202964334443172",
|
||||
"name": "Nat Sakimura"
|
||||
}, {
|
||||
"id": "523078074465377",
|
||||
"name": "Keisuke Kagawa"
|
||||
}, {
|
||||
"id": "325116630972406",
|
||||
"name": "津田千穂"
|
||||
}, {
|
||||
"id": "4298847927599",
|
||||
"name": "Sami Maekawa"
|
||||
}, {
|
||||
"id": "671955032839764",
|
||||
"name": "Naohiro Fujie"
|
||||
}, {
|
||||
"id": "10152168475655765",
|
||||
"name": "Takayuki Sadahiro"
|
||||
}, {
|
||||
"id": "552783474831745",
|
||||
"name": "Satsuki Kawaji"
|
||||
}],
|
||||
"paging": {
|
||||
"next": "https://graph.facebook.com/v2.0/10200841351194472/likes?pretty=1&limit=25&after=NTUyNzgzNDc0ODMxNzQ1",
|
||||
"cursors": {
|
||||
"before": "MTI0NjM2NDMzMA==",
|
||||
"after": "NTUyNzgzNDc0ODMxNzQ1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}],
|
||||
"paging": {
|
||||
"previous": "https://graph.facebook.com/v2.0/579612276/photos?type=tagged&limit=25&since=1395839118",
|
||||
"next": "https://graph.facebook.com/v2.0/579612276/photos?type=tagged&limit=25&until=1344010662"
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue