Rails设计了omniauth-facebook .persisted吗?返回假

我花了最后一天试图解决此问题,这让我发疯了。

昨晚,我在自己的网站上进行了Facebook登录,并正在检索基本用户信息。我的问题开始于我添加:scope => 'user_birthday'到的内容config/initializers/omniauth.rb,现在看起来像这样

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, "APP_ID", "APP_SECRET", :scope => 'user_birthday'
end

供参考,我config.omniauth :facebook, "APP_ID", "APP_SECRET"config/initializers/devise.rb

我花了几个小时试图使它起作用,但最终不得不放弃。然后今天早上我再次运行它,它奏效了。喜出望外,我试图添加另一个参数,:scope但现在整个事情又坏了。如果删除,我可以使它工作,:scope但是每次放回它时都会失败(即使:scope => 'user_birthday'就像今天早上我在做第一件事一样)。

为了找到问题所在,我放入了调试代码,omniauth_callbacks_controller.rb现在看起来像这样:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    # You need to implement the method below in your model (e.g. app/models/user.rb)
        @user = User.from_omniauth(request.env["omniauth.auth"])
        puts "start before persist debug"
        puts @user.birthday
        puts @user.persisted?
        puts "end before persist debug"

    if @user.persisted?         
            puts "Start persisted debug"
            puts request.env["omniauth.auth"]
            puts "End debug"            
      sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
      set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
    else
      session["devise.facebook_data"] = request.env["omniauth.auth"]
            puts "Start unpersisted debug"
            puts request.env["omniauth.auth"]
            puts "End debug"
      redirect_to new_user_registration_url
    end
  end
end

此调试清楚地表明,facebook正在返回必要的信息,但应用程序由于.persisted?返回false而失败,因此我被重定向到new_user_registration页面,该页面返回以下内容:

NoMethodError in Devise::Registrations#new
Showing /home/action/workspace/cloudapp/app/views/devise/shared/_links.html.erb where line #23 raised:

undefined method `omniauth_authorize_path' for #<#<Class:0x007f3aeffff038>:0x007f3aefffdf08>

我无法为自己的生活弄清楚为什么.persisted?返回假。我正在使用Nitrous.io通过Heroku PostgreSQL数据库进行开发。通过运行,我已经确认数据库中没有用户

rails c
User.all

返回:

  User Load (89.4ms)  SELECT "users".* FROM "users"                                                                                                                                                                                                     
=> #<ActiveRecord::Relation []> 

我感觉问题出在models/user.rb哪里但是我无法弄清楚如何调试它以查看它是否在寻找用户,因此没有持久存在或试图创建一个失败的用户。有谁知道调试此问题的简单方法?

def self.from_omniauth(auth)        
      where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
        user.email = auth.info.email
        user.password = Devise.friendly_token[0,20]
        user.name = auth.info.name   # assuming the user model has a name
        user.birthday = auth.extra.raw_info.birthday
        # user.image = auth.info.image # assuming the user model has an image
    end
end

我已经处理了大约50遍,几乎要放弃了。

我唯一能想到的就是where(provider: auth.provider, uid: auth.uid)返回某些内容(因为我的数据库为空,所以不应该这样做)。数据库外部某处可能存在索引,这就是它要搜索的内容吗?

请出于我的理智,有人可以帮忙吗?如果您需要更多信息,我会很乐意提供

编辑1

尝试了以下方法,它的工作原理使我比以往更加困惑:

  1. 我正在使用该帐户进行测试时,从我的Facebook帐户中删除该应用程序
  2. 尝试使用:scope => 'user_birthday'左侧的Facebook登录。Facebook列出的权限为your public profile and birthday接受并发送回我的网站,该操作如上所述失败(即使信息肯定会发送回)
  3. 删除:scope => 'user_birthday'并尝试再次使用Facebook登录。定向至Facebook,其中列出了寻求的许可your public profile and email address接受并定向回现在可以正常工作的站点,并且可以存储和访问用户生日,因为我从上面第2条得到了来自Facebook的许可。

我现在完全茫然了

mohameddiaa27

找出为什么不保存该对象。您需要放置错误。

puts @user.errors.to_a

并检查内容 auth

puts request.env["omniauth.auth"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设计Omniauth-facebook旁路Rails验证

来自分类Dev

使用OmniAuth Facebook设计

来自分类Dev

Rails 4 OmniAuth Facebook NoAuthorizationErrorCode

来自分类Dev

Rails API Omniauth(Facebook)登录

来自分类Dev

最新的omniauth-facebook gem突破设计

来自分类Dev

Rails中的omniauth-facebook验证错误

来自分类Dev

Rails omniauth facebook SSL握手失败

来自分类Dev

Rails omniauth facebook SSL握手失败

来自分类Dev

Rails设计专家omniauth

来自分类Dev

omniauth facebook可以从子域登录吗?

来自分类Dev

通过模型用户和个人资料+ Omniauth Facebook设计

来自分类Dev

Rails ActiveModel :: ForbiddenAttributesError设计,Omniauth

来自分类Dev

如何使用Rails,Omniauth和Rspec测试Facebook登录操作

来自分类Dev

How to Test Facebook Login Action with Rails, Omniauth and Rspec

来自分类Dev

Rails-Omniauth-facebook App_id必需错误

来自分类Dev

Rails OmniAuth Facebook“重定向URL必须是绝对的”

来自分类Dev

Rails omniauth-facebook生成随机电子邮件

来自分类Dev

从Omniauth Facebook访问信息

来自分类Dev

Omniauth Facebook-获取朋友

来自分类Dev

从omniauth保存用户的Facebook数据

来自分类Dev

尝试将omniauth facebook与rails集成并部署到heroku时无法登录

来自分类Dev

如何在Rails 4中使用Omniauth-facebook对用户进行身份验证

来自分类Dev

Facebook omniauth登录上的多个Rails应用程序路由出现问题

来自分类Dev

如何在Rails 4中保存Facebook omniauth的request.referrer

来自分类Dev

Omniauth Facebook不返回电子邮件和性别信息4

来自分类Dev

在Ruby on Rails应用程序中具有omniauth-facebook的omniauth_callbacks_controller的未初始化常量用户

来自分类Dev

devise + omniauth_facebook如何获取大的Facebook图片

来自分类Dev

devise + omniauth_facebook如何获取大的Facebook图片

来自分类Dev

Devise + Omniauth Facebook重定向到注册

Related 相关文章

  1. 1

    设计Omniauth-facebook旁路Rails验证

  2. 2

    使用OmniAuth Facebook设计

  3. 3

    Rails 4 OmniAuth Facebook NoAuthorizationErrorCode

  4. 4

    Rails API Omniauth(Facebook)登录

  5. 5

    最新的omniauth-facebook gem突破设计

  6. 6

    Rails中的omniauth-facebook验证错误

  7. 7

    Rails omniauth facebook SSL握手失败

  8. 8

    Rails omniauth facebook SSL握手失败

  9. 9

    Rails设计专家omniauth

  10. 10

    omniauth facebook可以从子域登录吗?

  11. 11

    通过模型用户和个人资料+ Omniauth Facebook设计

  12. 12

    Rails ActiveModel :: ForbiddenAttributesError设计,Omniauth

  13. 13

    如何使用Rails,Omniauth和Rspec测试Facebook登录操作

  14. 14

    How to Test Facebook Login Action with Rails, Omniauth and Rspec

  15. 15

    Rails-Omniauth-facebook App_id必需错误

  16. 16

    Rails OmniAuth Facebook“重定向URL必须是绝对的”

  17. 17

    Rails omniauth-facebook生成随机电子邮件

  18. 18

    从Omniauth Facebook访问信息

  19. 19

    Omniauth Facebook-获取朋友

  20. 20

    从omniauth保存用户的Facebook数据

  21. 21

    尝试将omniauth facebook与rails集成并部署到heroku时无法登录

  22. 22

    如何在Rails 4中使用Omniauth-facebook对用户进行身份验证

  23. 23

    Facebook omniauth登录上的多个Rails应用程序路由出现问题

  24. 24

    如何在Rails 4中保存Facebook omniauth的request.referrer

  25. 25

    Omniauth Facebook不返回电子邮件和性别信息4

  26. 26

    在Ruby on Rails应用程序中具有omniauth-facebook的omniauth_callbacks_controller的未初始化常量用户

  27. 27

    devise + omniauth_facebook如何获取大的Facebook图片

  28. 28

    devise + omniauth_facebook如何获取大的Facebook图片

  29. 29

    Devise + Omniauth Facebook重定向到注册

热门标签

归档