gpt4 book ai didi

ruby-on-rails - 如何从 Ruby on Rails 应用程序中的 OAuth::Unauthorized 异常中解救出来?

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

如何从 Ruby on Rails 应用程序中的 OmniAuth 引发的 OAuth::Unauthorized 异常中解救出来?

显然是这样的:

  rescue_from OAuth::Unauthorized, :with => :unauthorized

不会工作,因为它只会捕获 Rails 内部抛出的异常,而这个异常会在机架链的其他地方抛出。

在这个应用程序中,管理员(而不是我们,开发人员)为 twitter 和 facebook 配置凭据,所以有错误的凭据是可能发生的,而且确实发生了。当这种情况发生时,我想显示一个更好的消息,即“出了点问题”。

更新:我也是asked on the omniauth google group ,到目前为止还没有答案,但如果您正在阅读这个问题,您可能想检查一下。

最佳答案

OmniAuth 从机架中间件运行,因此 rescue_from 不会影响它,因为这是通过 ActionController 高于 OmniAuth 的抽象级别。

此错误通常是由于您的 OAuth 设置配置错误造成的。基本上它是说您的应用程序无权进行身份验证,而不是用户的身份验证失败。

作为开发人员,您希望减轻配置错误,所以我不确定您为什么要挽救这样的异常。

如果你绝对必须拯救这个异常,你可以覆盖并使用从 OmniAuth 继承的中间件

module OmniAuth
module Strategies
class FacebookWithExceptionHandling < OmniAuth::Strategies::Facebook
def call
begin
super
raise OmniAuth::Unauthorized => e
#handle appropriately in rack context here
end
end
end
end
end

Rails.application.config.middleware.use OmniAuth::Builder do
provider OmniAuth::Strategies::FacebookWithExceptionHandling,
api_key, #your api key
secret_key, #your secret key
end

关于ruby-on-rails - 如何从 Ruby on Rails 应用程序中的 OAuth::Unauthorized 异常中解救出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227440/

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