1

私は Ruby と Rails の初心者ですが、OmniAuth を Facebook 経由の認証に使用することができました。すべてが正常に機能し、ユーザーを作成でき、Facebook でログインできます。

問題は、ユーザー データの一部 (メール、プロフィール写真など) を取得して保存したいということです。

README ( https://github.com/mkdynamic/omniauth-facebook ) を調べたところ、次のことがわかりました。

request.env['omniauth.auth'] で利用可能な認証ハッシュの例を次に示します。

{
  :provider => 'facebook',
  :uid => '1234567',
  :info => {
    :nickname => 'jbloggs',
    :email => 'joe@bloggs.com',
    :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/ ) を実行する初心者ですが、試行錯誤しながら独自のアプリを作成しようとしています。

4

1 に答える 1

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

于 2012-04-02T19:57:13.813 に答える