我创建了新的Rails应用程序并安装了Devise和omniauth-facebook gem.
并将我的Facebook App设置为测试环境.
所以,我通过Facebook登录并注册了我的新Rails应用程序,但request.env不包含电子邮件地址.info.
返回request.env ['omniauth.auth']
{
"provider" => "facebook",
"uid" => "xxxxxxxxxxxx",
"info" => {
"name" => "xxxxxxx",
"image" => "http://graph.facebook.com/xxx/picture"
},
"credentials" => {
"token" => "tokenstring",
"expires_at" => xxxxxxxxx,
"expires" => true
},
"extra" => {
"raw_info" => {
"name" => "xxx xxxx",
"id" => "xxxxxxxxx"
}
}
}
Run Code Online (Sandbox Code Playgroud)
它机架request.env ['omniauth.auth'] ['info'] ['email']
如何通过oauth从facebook获取电子邮件地址?请有人帮帮我.
Rails ver是4.2.3 Ruby ver是2.2.2p95
这是宝石版本
omniauth (1.2.2)
omniauth-facebook (2.0.1)
devise (3.5.1)
Run Code Online (Sandbox Code Playgroud)
配置/初始化/ devise.rb
config.omniauth :facebook, 'appId', 'appSeacret', scope: 'email,public_profile'
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/ omniauth_callbacks_controller.rb
def …Run Code Online (Sandbox Code Playgroud) 我有Order模型并Order.all在下面返回.
[
[0] #<Order:0x007f9d9e236de0> {
:id => 15,
:user_id => 2,
:artist_id => nil,
:address_id => 18,
:paid_at => nil,
:payment_type => "bank",
:guid => "c8e22764774adc6825348b8874b581e8",
:created_at => Mon, 24 Aug 2015 19:42:09 JST +09:00,
:updated_at => Mon, 24 Aug 2015 19:45:38 JST +09:00,
:ordered_at => Mon, 24 Aug 2015 19:45:37 JST +09:00,
:total => 43890
},
[1] #<Order:0x007f9d9e2367a0> {
:id => 12,
:user_id => 2,
:artist_id => nil,
:address_id => 18,
:paid_at => nil,
:payment_type => "bank", …Run Code Online (Sandbox Code Playgroud)