6

rails gem: OmniAuth を使用してユーザーをログインさせています。

OpenId プロバイダーを使用する場合、メールやニックネームなどの特定のフィールドを取得したいのですが、これに関するドキュメントはありません。

何か案は?

ありがとう

4

6 に答える 6

4

そのデータを要求する方法、または確実に取得する方法を尋ねていますか? OpenID AX 属性を使用してデータを要求できますが、OpenID プロバイダーは要求に応答する義務はありません。ただし、これは役立つはずです。

Rails で Google / Yahoo から OpenID AX 属性を取得する

Google は次の場合にのみメールで応答するようです

http://schema.openid.net/contact/email

一方、Yahooは返信します

http://axschema.org/contact/email
于 2011-02-07T13:08:27.967 に答える
2

Ryan BatesによるこのRailscast(終わりに向かって)は、 OpenIDを介して認証するときに電子メールアドレスをキャプチャするのに役立つ場合があります。その他の利用可能なフィールドについては、認証リクエストを行うときに、認証コントローラーに次のようなものを追加できると思います

# authentications_controller.rb
...
def create
  omniauth = request.env["omniauth.auth"]
  raise omniauth.to_yaml
  ...
end
...

次に、openIDを介してログインし、使用できるオプションを確認します。

于 2011-01-04T16:46:13.117 に答える
1

これについては、Devise omniauth 統合ドキュメントの「Google」openID セクションにいくつかの手順があります。

https://github.com/plataformatec/devise/wiki/OmniAuth:-概要

find_for_open_idユーザー モデルのクラス メソッドと、データがハッシュUsers::OmniauthCallbacksControllerからどのように渡されるかについてのコントローラー サブクラスを探します。request.env["omniauth.auth"]これは、Google だけでなく、あらゆる OpenID 戦略に関連しています。

OpenID プロバイダーに要求する属性を正確にカスタマイズするという点では、gem の独自のクローンを作成するomniauth_openidか、それをサブクラス化し、options. (参照: https://github.com/intridea/omniauth-openid/blob/master/lib/omniauth/strategies/open_id.rb )

于 2012-07-22T12:06:58.253 に答える
0

request.env['omniauth.auth'] には必要なものが含まれているはずです。Twitterの場合、次のようなものを返します

{
  'uid' => '12356',
  'provider' => 'twitter',
  'user_info' => {
    'name' => 'User Name',
    'nickname' => 'username',
    # ...
  }
}

openid を調べるだけです。

于 2010-10-17T06:39:13.350 に答える
0

request.env['omniauth.auth'] には、コールバックからの応答全体が含まれます。ただし、すべてのプロバイダーがユーザーのメールを返すわけではありません (Twitter は返さない)。google または yahoo 経由の OpenID では、'user_info' ハッシュの一部として電子メールが含まれている必要があります。

于 2011-01-19T12:08:05.293 に答える