这是用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'
}
在下面的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'}
不工作!!
答案 0 :(得分:0)
不确定该范围正在做什么,但我刚刚解决了获取谷歌信息的问题。 该信息是实际的params发送到rails,还是保存的用户哈希?
如果不是您登录的实际参数,您可以使用:
# 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
如果那不是你需要的,你能更具体一点吗?