1

これは omniauth.rb の初期化子に書かれています。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2,ID,SECRET,
  {
  :approval_prompt => '',
  :scope => 'http://gdata.youtube.com,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile'
  }

返された認証ハッシュの "info" に IMAGE 要素がありません。なぜですか?????????

以下の HASH で元の情報を x に置き換えました

*********************
--- !ruby/hash:OmniAuth::AuthHash
provider: google_oauth2
uid: 'xxxxxxxxxxxxxxxxxxxx' 
info: !ruby/hash:OmniAuth::AuthHash::InfoHash
  name: xxxx xxx 
  email: xxxxxxxxxx 
  first_name: xxxxxx
  last_name: xxxxxxx 
credentials: !ruby/hash:Hashie::Mash
  token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
  expires_at: 1365434778
  expires: true
extra: !ruby/hash:Hashie::Mash
  raw_info: !ruby/hash:Hashie::Mash
    id: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    email: xxxxxxxxxx.xxx@gmail.com 
    verified_email: true
    name: xxxx xxxx 
    given_name: xxx 
    family_name: xxx 
    link: https://plus.google.com/xxxxxxxxxxx 
    gender: male
    locale: en
*********************

プロフィール画像が欲しいのですが、何が間違っていますか?

また、試した、

{:scope => 'userinfo.email,userinfo.profile'}

動作しません!!

4

1 に答える 1

0

そのスコープが何をしているのかわかりませんが、自分でGoogle情報を取得することを解決しました. その情報はレールに送信された実際のパラメーターですか、それとも保存されたユーザーハッシュですか?

ログイン時に取得する実際のパラメータでない場合は、次を使用できます。

# sessions_controller.rb
raise env["omniauth.auth"].to_yaml

これにより、Google が送信するすべての情報が表示されます。

それがユーザーで、私のようにRailscastsをフォローしている場合は、写真を保存するフィールドを作成したことと、ハッシュから情報を保存するようにフィールドを設定したことを確認してください。これは私がしました:

# sessions_controller.rb
def create
  user = User.from_omniauth(env["omniauth.auth"])
  user.image = env["omniauth.auth"]['info']['image']
  user.save
  session[:user_id] = user.id
  redirect_to root_url, :notice => "Signed in!"
end

それがあなたが必要としているものではない場合、より具体的に教えてもらえますか?

于 2013-05-10T14:44:47.253 に答える