Omniauth-facebook哈希没有显示Facebook’用户名’字段,使用rails 3

我已经设置了我的rails 3应用程序以使用omniauth-facebook,一切正常但是当我将omniauth hash看作yaml时没有’nickname’字段,我可以得到’name’和’email’但我的validation无法创建用户,因为我无法获取应用程序用户名要求的昵称。

我已经在“设置”下仔细检查了我的Facebook帐户,并显示了我的用户名。 任何想法为什么会发生这种情况? 谢谢您的帮助。

这是我的omniauth哈希的一个例子,我出于隐私原因放置了’X’:

--- !ruby/hash:OmniAuth::AuthHash provider: facebook uid: 'XXXXXXXXXXXXX' info: !ruby/hash:OmniAuth::AuthHash::InfoHash email: XXXX@XXXX.XX name: XXXX XXXX first_name: XXXX last_name: XXXX image: http://graph.facebook.com/XXXXXXXXXXXXX/picture urls: !ruby/hash:OmniAuth::AuthHash Facebook: https://www.facebook.com/app_scoped_user_id/XXXXXXXXXXXXX/ verified: true credentials: !ruby/hash:OmniAuth::AuthHash token: ACCESS_TOKEN expires_at: 1406357169 expires: true extra: !ruby/hash:OmniAuth::AuthHash raw_info: !ruby/hash:OmniAuth::AuthHash id: 'XXXXXXXXXXXXXXX' email: XXXX@XXXX.XX first_name: XXXX gender: male last_name: XXXX link: https://www.facebook.com/app_scoped_user_id/XXXXXXXXXXXXX/ locale: en_US name: XXXX XXXX timezone: 7 updated_time: '2014-05-07T00:58:12+0000' verified: true 

没有字段nickname ,你的意思是username吗? 如果是这样,如果您使用Graph API v2.0则不再可用。

参考文献:

我知道这是一个老问题。 由于facebook现在不支持在登录时获取用户名,因此获取用户名的解决方法是,从facebook登录按钮的onSuccess()方法调用GraphRequest.newMeRequest()