0

我在应用程序中遇到了一个奇怪的错误。当我尝试使用 facebook 登录时会发生这种情况,而不是在 facebook 上拒绝应用程序要求的权限。

这是堆栈跟踪:

Started GET "/users/auth/facebook/callback?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied&state=426366bb3ac72ca4ad2b8b3fea5d5c7f628d6463b5df64a6" for 95.51.182.141 at 2013-09-05 20:55:24 +0000
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError
Processing by Devise::OmniauthCallbacksController#failure as HTML
Parameters: {"error"=>"access_denied", "error_code"=>"200", "error_description"=>"Permissions error", "error_reason"=>"user_denied", "state"=>"426366bb3ac72ca4ad2b8b3fea5d5c7f628d6463b5df64a6"}
Completed 500 Internal Server Error in 2ms

NoMethodError (undefined method `to_sym' for nil:NilClass):
   vendor/bundle/ruby/1.9.1/gems/mobile-fu-1.1.1/lib/mobile-fu.rb:165:in `mobile_exempt?'
   vendor/bundle/ruby/1.9.1/gems/mobile-fu-1.1.1/lib/mobile-fu.rb:114:in `set_mobile_format'
   vendor/bundle/ruby/1.9.1/gems/mobile-fu-1.1.1/lib/mobile-fu.rb:89:in `set_request_format'
(...)

有趣的是,当我查看 mobile-fu 代码时,我看到 nil (显然不应该)是params[:action].

4

1 回答 1

0

我挖得更深了,它的接缝设计很有趣,有时 params[:action] 没有设置。无论如何,这是 divise <-> mobile-fu 线上的问题,或者这就是它的接缝。

这是github上的一个问题(现已关闭):

https://github.com/benlangfeld/mobile-fu/issues/22#issuecomment-26775053

修复不是我想要的,但也许没有设置 params[:action](和 params[:controller])是有原因的

于 2013-10-22T20:52:51.360 回答