Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Devise / Omniauth故障:如何调试?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试“使用Google登录”后,我在日志中看到此错误:
Processing by Users::OmniauthCallBACksController#failure as HTML

我可以通过URL(在日志中)查看从Google发送的所有数据,包括用户电子邮件和名称.那么可能出什么问题?我的回调甚至没有执行.我只被重定向到我网站的sign_in页面.

而且我很确定一切都配置正确,因为这在几个星期前工作正常.我不认为我改变了一切. Facebook登录仍然正常.

关于如何调试这个失败的任何想法?日志中没有其他内容,除了那些长时间的URL中,还有参数和值.只有INFO消息.上面发布的是唯一一个关于失败的东西.

updatE

我向控制器添加了一个“失败”方法

def failure
  render :text => params.inspect
end

哪个停止了重定向,并打印出来:

{}

这是url:

/users/auth/google/callBACk?_method=post&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud&openid.response_nonce=2012-04-16T12%3A25%3A49Z_v1fNngSQJaHBQ&openid.return_to=http%3A%2F%2Fdev.myapp.me%3A3000%2Fusers%2Fauth%2Fgoogle%2FcallBACk%3F_method%3Dpost&openid.assoc_handle=AMlYA9Urw_lYamPphTSdQ9a6DU0Ez0y5RaDDM78qPL7Xgm77nMpJiB85&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ext1%2Cext1.mode%2Cext1.type.ext5%2Cext1.value.ext5%2Cext1.type.ext8%2Cext1.value.ext8%2Cext1.type.ext2%2Cext1.value.ext2&openid.sig=2FPjo7U1e%2Fde248XpUgjQLduNAM%3D&openid.identity=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawk1F5U6x_-kJnydjoww5haU41tquh1Zl2c&openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawk1F5U6x_-kJnydjoww5haU41tquh1Zl2c&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ext1.mode=fetch_response&openid.ext1.type.ext5=http%3A%2F%2FaxscheR_932_11845@a.org%2FnamePerson%2Ffirst&openid.ext1.value.ext5=Some_User&openid.ext1.type.ext8=http%3A%2F%2FaxscheR_932_11845@a.org%2Fcontact%2Femail&openid.ext1.value.ext8=some_email%40gmail.com&openid.ext1.type.ext2=http%3A%2F%2FaxscheR_932_11845@a.org%2FnamePerson%2Flast&openid.ext1.value.ext2=Some_User

所以事情是,我需要的所有数据都在URL中,但是devise / omniauth并没有抓住它(显然这就是为什么它被称为’failure’方法而不是我的回调).我不知道它是否可以通过’params’数组访问,或者什么.

我也很感兴趣的是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _也许这只是意味着omniauth对谷歌的请求是POST.

有什么想法吗?

解决方法

要回答有关如何调试Omniauth的原始问题,请参见如何为Omniauth启用日志记录.在您定义Omniauth策略之后,将此行添加到config / initializers / devise.rb中:
OmniAuth.config.logger = Rails.logger if Rails.env.development?

(如果您不使用Devise,只需使用Omniauth,然后将代码添加到config / initializers / omniauth.rb)

您将在日志文件中收到Omniauth的更多信息,包括回调阶段的完整响应.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – Devise / Omniauth故障:如何调试?全部内容,希望文章能够帮你解决ruby-on-rails – Devise / Omniauth故障:如何调试?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。