2012-03-22 10 views
2

私は自分のサイトにFacebookのプロフィール写真を表示しようとしていますが、ソースの人のFacebookのIDを漏らしたくありません。写真のFacebookグラフAPIのURLをマスクするにはどうすればいいですか?

たとえば、このURL:http://graph.facebook.com/4/pictureは、ブラウザにロードするとhttp://profile.ak.fbcdn.net/hprofile-ak-snc4/157340_4_3955636_q.jpgにリダイレクトされます。私は2番目のURL(CDNのURL)を取得し、それが私のimg srcとして使用したいので、URLにfacebook idが表示されません。

def picture_square(facebook_id, secure=false) 
    raw_url = "http://graph.facebook.com/" facebook_id + "/picture?type=square" 
    if secure 
    binary_img = '' 
    open(raw_url) do |f| 
     binary_img = f.read 
    end 
    encoded_img = Base64.encode64(binary_img) 
    return 'data:image/jpg;base64,' + encoded_img.to_s 
    else 
    return raw_url 
    end 
end 

あなたは、次のHTMLでこれを呼び出すことができます(上記を使用して:私は、現時点ではRuby on Railsでこれをやって、私は以下のやっていることことをより良い方法があるかどう興味津々だ

例):

<img src="<%= picture_square(4, true) %>" 

これは間違いなく動作し、実際に画像をレンダリングするために、インライン画像のプロパティを使用しますが、あなたがロードしようとしている画像の束を持っている場合、それは少し遅いです。

リダイレクトされたURLを取得し、実際の生のバイナリデータを取得してbase64にエンコードしようとする代わりに、そのURLを返す方法がありますか? http://graph.facebook.com/4/?fields=picture&type=large

これは、あなたがJSONレスポンスの内部を探しているイメージを返します。

答えて

1

はこのURLでグラフAPIへの呼び出しを行います。もう1つのオプションは、あなたが投稿した最初のURLへのHTTPリクエストを作成し、HTTPヘッダーを調べてロケーションヘッダーを読み取ることです。

+0

これは完全に機能しました。ありがとう! – fffanatics

関連する問題