1

ユーザーがFacebook経由でログインするときに、自分のサイトのプロファイル画像としてFacebookプロファイル画像を使用したいと思います。Facebookのログインにomniauthgemを使用しています。ログイン後、omniauthは次のようなハッシュの形式でFacebookの応答を返します。

{
  "user_info" => {
                   "last_name" => "..........", 
                   "image" => "http://graph.facebook.com/100002356868026/picture?type=square",
                   "first_name" => "........", 
                   "email" => "xxxxx@xxx.xxx"
                  },
  "uid" => "..........."
}

ここでは、を使用して画像のURLにアクセスし、を使用しrequest.omniauth["user_info"]["image"]て保存できます

require 'open-uri'
image_url = request.omniauth["user_info"]["image"]
image_data = open(image_url).read
File.open("image.png", "wb") { |file| file << image_data }

URLから画像名を取得したい。ただし、FacebookのURLには名前が含まれていません(URLに画像名が含まれている別のページにリダイレクトするリンクです)。URLから画像名を解析するにはどうすればよいですか?

4

1 に答える 1

1

URLから最終的な画像名を取得できるとは思いません。画像はコンテンツ配信ネットワーク (CDN) に保存され、Facebook ID ではなく、他のインデックスによって画像が配信されます。

とにかく、最終的な画像名が必要なのはなぜですか? 引用した画像パラメーターに従って画像を取得できます。ユーザーの画像データが返されます (利用可能な場合は、ダミーの画像が返されます)。

画像をサーバーに保存する場合は、独自の命名スキームを選択する可能性が高くなります。

重要: Facebook 開発者規約をよく確認してください。ユーザーの画像をサーバーに保存すると、これらの条件に違反する可能性があります。

サーバー上で画像を処理するのではなく、可能であれば、html 画像タグに画像パラメーターをそのまま含めることをお勧めします。

于 2011-11-25T23:50:47.093 に答える