gpt4 book ai didi

ruby-on-rails - Devise + Omniauth-Facebook 获取用户的电话#

转载 作者:行者123 更新时间:2023-12-02 09:37:09 25 4
gpt4 key购买 nike

我在 Rails 3.2 应用程序中使用 Devise 进行身份验证,但在配置 omniauth-facebook 来获取新用户的电话号码时遇到问题。

首先:我什至不确定是否可以获取电话号码,因此如果情况确实如此并且有人确切知道,我会很高兴得到确认。

它没有出现在 https://github.com/mkdynamic/omniauth-facebook 中默认情况下,“phone”是 FB auth 哈希的一部分,尽管通用 Omniauth 架构确实有 .info.phone (当然不是必需的)。所以我的第一个想法是这是 FB 权限问题。不过,我不确定要使用什么权限,如 Permissions with Facebook Login页面没有说明在哪里可以找到电话值(也许这意味着这是不可能的?)。

我将 phone 作为用户模型上的必需属性,因此当我尝试通过 FB 获取它时,新对象永远不会保留。无需查找电话号码即可正常工作。

我的配置文件:

# /config/initializers/devise.rb

config.omniauth :facebook, 'FACEBOOK_APP_ID', 'FACEBOOK_APP_SECRET', scope: 'email,public_profile', display: 'page'

在我的用户模型中:

# user.rb

def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
user.first_name = auth.info.first_name
user.last_name = auth.info.last_name
user.phone = auth.extra.raw_info.phone # have also tried auth.info.phone
end
end

预先感谢您提供的任何帮助!

最佳答案

目前无法从 Facebook 获取用户的电话号码。

Facebook's Graph API reference列出您可以通过 API 访问的所有用户信息。用户的电话号码不在列表中。

此外,要检查身份验证哈希的内容,请在身份验证/ session /回调 Controller 操作的开头添加以下代码行:

render :text => "<pre>" + env["omniauth.auth"].to_yaml and return

您会看到 auth.extra.raw_infoauth.info 处没有 phone 字段。

关于ruby-on-rails - Devise + Omniauth-Facebook 获取用户的电话#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24460276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com