顧客のページに写真を投稿しようとしています。ページに「Wall Photos」アルバムがある場合とない場合があります。
既存の「ウォール フォト」アルバムがないシナリオでは、ウォール フォト アルバムの作成/作成を要求するにはどうすればよいですか?
Koala を使用しており、アルバムを作成できますが、type = "wall" のアルバムを作成できません。
アルバムの作成/検索に使用しているコードは次のとおりです。
def get_photo_album(facebook_id)
# Looking for a pre-existing WALL PHOTO album
p "============= Getting Wall Photos album for fbid #{facebook_id}"
album = get_album facebook_id, 'Wall Photos'
unless album
p ' ======= Album FAIL 1 - getting Photos '
album = get_album facebook_id, FALLBACK_ALBUM_NAME
unless album
p ' ========== Album FAIL 2 - MAKING Phtoos '
@graph_client.put_object facebook_id, 'albums', 'name' => FALLBACK_ALBUM_NAME
sleep 3 # wait 3 seconds to let facebook make and fiddle with new album
album = get_album facebook_id, FALLBACK_ALBUM_NAME
unless album
p ' ##################### UTTER ALBUM FAIL '
raise "Cannot use alternative photo album"
end
end
end
if album && album.length > 0
album
else
# ensure that there is an album.
raise "Cannot use alternative photo album"
end
end
def get_album(facebook_id, name)
params = {'name' => name};
albums = @graph_client.get_connections(facebook_id, "albums", params)
p "Found #{albums ? albums.length : 0} albums named #{name} for fbid #{facebook_id}"
albums = albums.reject do |a|
a['name'] != name
end
p "Found #{albums ? albums.length : 0} albums named #{name} for fbid #{facebook_id} AFTER filtering for name"
pp albums
albums.length >0 ? albums[0] : nil
end
終わり
そして、ここに私が写真自体を置くために使用しているコアラコードがあります
def put_image(facebook_id, params)
params = sanitize_params(params)
params = encode_necessary_params(params)
picture = URI.decode(params['picture'])
photo_album = get_photo_album(facebook_id)
photo_album_id = photo_album['id']
params = params.reject do |key, value|
key == 'metadata_type'
end
p ' -------------------------------------- PUT PICTURE ----------------------------'
p "fbid:#{facebook_id}, message: #{params['message']}, picture: #{picture}"
p ' -------------------------------------- PUT PICTURE ----------------------------'
out = @graph_client.put_picture picture, {:message => params['message']}, photo_album_id
Statsd.increment("posts")
out
rescue Exception => ex
handle_error(ex)
end
次のようないくつかのバリエーションを試しました。
- 'type' => 'wall' を @graph_client.put_object パラメーターに入れる: 画像をまったく投稿しない
- 「Wall Photos」という名前のアルバムを作成します - アルバムは表示されますが、投稿がウォール投稿のようには見えません。
明確にするために: *最終的な目標は、このアルバムへのすべての投稿に「大きな」プレビューを表示することです。1 インチのタイル表示ではなく、列幅いっぱいに表示します。 *
どんな助けでも大歓迎です。