2012-04-02 14 views
1

私はRubyとRailsの初心者ですが、フェイスブック経由での認証にOmniAuthを使用することができました。すべてうまく動作し、私はユーザーを作成することができ、Facebookでログインすることができます。Facebookからの情報取得OmniAuth認証ハッシュ

問題は、ユーザーデータ(電子メール、プロフィール写真など)の一部を取り出して保存することです。 README(https://github.com/mkdynamic/omniauth-facebook)を通って行く

は、私が見つけることができた:

はここrequest.env [ 'omniauth.auth']で利用可能な例の認証ハッシュです:

{ 
    :provider => 'facebook', 
    :uid => '1234567', 
    :info => { 
    :nickname => 'jbloggs', 
    :email => '[email protected]', 
    :name => 'Joe Bloggs', 
    :first_name => 'Joe', 
    :last_name => 'Bloggs', 
    :image => 'http://graph.facebook.com/1234567/picture?type=square', 
    :urls => { :Facebook => 'http://www.facebook.com/jbloggs' }, 
    :location => 'Palo Alto, California', 
    :verified => true 
    } 
} 

私が実行しようとしましたより多くの認証ハッシュを検索し、取得できる情報の一部をリストしています。https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema

問題は、私は特定のアクセス許可を求めました。問題は、Facebookがどのような種類の情報を送信しているかをどのように知っていますか?残念ながら、この情報はrequest.env [omniauth.auth ']にあると言ってもあまり良くありません。ここから情報を取得するにはどうすればよいですか?

私はRailsチュートリアル(http://ruby.railstutorial.org/)を試していますが、試行錯誤して自分のアプリケーションを作成しようとするのは本当の初心者です。

答えて

2

request.env ['omniauth.auth']はあなたにハッシュを与えます。あなたがハッシュで何ができるかRubyのドキュメントをチェックしてください。いつもそこになるだろうされていない任意の要素については

http://ruby-doc.org/core-1.9.3/Hash.html

あなただけの、例えば、blank?(Railsのコンビニエンスメソッド)を確認することができます

omniauth = request.env['omniauth.auth'] 
unless omniauth['info']['email'].blank? 
    send_spam omniauth['info']['email'] # ;) 
end 

あなたはすでにそれを見ていない場合は、おそらく以下のスクリーンキャストが役立つでしょう:

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

+0

ありがとうございました。 railscastが情報を引き出す方法を示しているのを見てください。 – Victor

+0

1つの質問。私はこれが新しい質問になるはずですが、認証ハッシュからデータを引っ張った後、重複しているデータがあるかどうかはわかりません。たとえば、ユーザーが複数の雇用者を持つ可能性があります。これをどうすれば処理できますか?私は一番最近の雇用主に興味があります。 – Victor

+0

私はそのデータを見る必要があります。ハッシュは一般に順序付けられていません。それはあなたに日付を与えるのですか? –

関連する問題