【问题标题】:Omniauth-facebook hash not showing Facebook 'username' field, using rails 3Omniauth-facebook 哈希未显示 Facebook 的“用户名”字段,使用 rails 3
【发布时间】:2014-05-27 08:27:08
【问题描述】:

我已将我的 rails 3 应用程序设置为使用omniauth-facebook,一切正常,但是当我将omniauth 哈希视为yaml 时,没有“昵称”字段,我可以获得“名称”和“电子邮件”但我的验证无法创建用户,因为我无法为我的应用程序的用户名要求获取昵称。

我在“设置”下仔细检查了我的 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

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-3 omniauth facebook-oauth


    【解决方案1】:

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

    参考资料:

    【讨论】:

    • 抱歉,是的,它没有显示用户名。我在omniauth-facebook gem上编辑了这个问题,它显示为昵称。这是否已贬值且不再受 facebook 支持?有没有办法从 facebook 检索用户名?在我的 Facebook 应用程序设置下,它说我的用户名将与我的其他个人资料信息一起公开给我授权的所有应用程序
    • 我的应用程序是今天在 facebook 上创建的,所以我认为它将使用 API v2.0,如下所述:developers.facebook.com/docs/apps/versions
    • 已弃用,请参阅您刚才引用的链接:/me/username is no longer available.
    • 此链接表示,如果用户选择将其公开(我的测试 facebook 拥有),那么使用图形 API 的任何人都应该可以使用该用户名,为什么不将其包含在 omniauth 哈希中? facebook.com/about/privacy/your-info#public-info
    • 因为我猜您粘贴的链接已经过时并且与 Graph API 无关?我想你可以编辑 omniauth-facebook 并删除这一行:github.com/mkdynamic/omniauth-facebook/blob/master/lib/omniauth/…
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多