私は自分のコンピュータから写真をアップロードしたり、Facebookからフェッチする方法を考えています。Paperclip gemを使用しているときにFacebookから取得したプロフィール画像を保存する
私はすでにイメージをアップロードし、Paperclipプラグインを使用してイメージを保存するためのフォームを持っています。それはうまく動作します。
私はすでにFacebook認証を設定しており、FacebookグラフAPIにアクセスするためにKoalaの宝石を使用しています。
私はすでにこの方法を書いてきました:
def fetch_fb_picture
unless current_user.authentications.blank?
@graph = Koala::Facebook::GraphAPI.new(current_user.authentications.find_by_provider("facebook").token)
@picture = @graph.get_picture("#{current_user.authentications.find_by_provider('facebook').username}")
current_user.profile.photo = @picture
end
end
私はコアラの宝石は、画像のURLを返します信じています。しかし、私はクリップの宝石を使用していているので、私のプロファイルは、これらの属性を受け付けます。
t.string "photo_file_name"
t.string "photo_content_type"
t.integer "photo_file_size"
は、どのように私は、それゆえ、適切にデータベースにFacebookの画像を保存しますか?彼らは常に、公的に入手可能であるようFaceboookグラフは常に、ユーザーのあなたのイメージを返しますよう、私はこのようにそれをやってお勧めwouldntの
r = open("http://graph.facebook.com/#{@user.facebook_id}/picture")
image_data = r.read
file_size = r.length
mime_type = "image/jpeg" #fb photos always are jpg
#write data to database, or save as temp file and upload to S3
:
は、私はちょうど 'Rを行うことができます=私はすでに持っているものから '@picture 'を開きますか?ユーザー名とIDの違いはありますか? – user730569
Theresの違いはありません( 'Pictures' http://developers.facebook.com/docs/reference/api/を参照)が、ユーザー名が設定されていない人もいるので、そのプロフィールはhttp://www.facebookのようなものです。 http://www.facebook.com/someuserの代わりにcom/profile.php?id = 1234ですので、ユーザ名が存在しない場合は、ユーザ名を使用して画像を取得することはできません。 – Dominic
あなたが動的である場合、それをFacebookのグラフから引き出しますか? – user730569