3

Rails 3.0.4を使用して作成しているWebアプリのFacebook経由でユーザーを認証するために、DeviseでOmniauthを使用しています

Ryan Bates の Railscasts をモデルにしました。

http://railscasts.com/episodes/235-omniauth-part-1
http://railscasts.com/episodes/236-omniauth-part-2

この時点で、自分の Facebook アカウントで自分のサイトにログインし、コールバック ハッシュからメールを取り出すことができます。これは次のようになります。

request.env["omniauth.auth"]  

{"user_info"=>  
  {"name"=>"Eric Hu",  
   "urls"=>  
    {"Facebook"=>"http://www.facebook.com/...", "Website"=>nil},  
   "nickname"=>"...",  
   "last_name"=>"Hu",  
   "first_name"=>"Eric"},  
 "uid"=>"...",  
 "credentials"=>  
  {"token"=> "..."},  
 "extra"=>  
  {"user_hash"=>  
    {"name"=>"Eric Hu",  
     "timezone"=>-8,  
     "gender"=>"male",  
     "id"=>"...",  
     "last_name"=>"Hu",  
     "updated_time"=>"2011-02-21T17:46:19+0000",  
     "verified"=>true,  
     "locale"=>"en_US",  
     "link"=>"http://www.facebook.com/...",  
     "email"=>"...",  
     "first_name"=>"Eric"}},  
 "provider"=>"facebook"}  

(replaced some fields with "..." for my own privacy)

現在、このフィールドを使用してユーザーのメールアドレスを取得しています

 request.env["omniauth.auth"]["user_info"]["extra"]["email"]

コールバック ハッシュがユーザーの設定によって異なるかどうかはわかりません。Facebook でメールの表示設定を実際に制限しましたが、それでも表示されます。私のコードがこのハッシュで考えられるバリエーションを確実に処理できるようにするために、この Facebook ログイン コールバック ハッシュがどのように見えるか、またどのように変化するかについてのリファレンスを見つけたいと思います。これまでのところ、SO または Facebook の開発者向けドキュメントには何も見つかりませんでした。

質問: Facebook ログイン コールバック ハッシュの公式リファレンスはありますか? すべてのユーザーに同じハッシュ要素がすべて存在するとは思いたくありません。Facebook と Omniauth を使用して自分の Rails アプリを認証したい他の人のために、ここにできるだけ多くの情報を含めました。

4

1 に答える 1

3

Facebook 権限リファレンスを見てください。これは、ユーザーに要求できる権限のリストです。これにより、特定のものを要求することができ、ユーザーが許可を与えた場合、フィールドが存在することを保証できます。また、ユーザー エクスペリエンスを理解するために、認証ドキュメントを一読することをお勧めします。

必要なパーミッションがわかったら、デバイスの設定 (config/initializers/devise.rb) を更新して、デバイスが必要なパーミッションを要求するようにします。

config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, {:scope => 'offline_access,email,user_birthday'}
于 2011-03-02T21:51:31.830 に答える