gpt4 book ai didi

ruby-on-rails - Facebook 身份验证不适用于自定义回调路径

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

我正在使用 devise/omniauth 来针对 Facebook 验证我的 Rails 应用程序。我正在尝试将 callback_path 更改为自定义内容,但无论我将其设置为什么,omniauth.auth 请求变量返回为 nil。例如,这里我将 callback_path 设置为我未设置它时的确切值:

Devise.setup do |config |    
require "omniauth-facebook"
config.omniauth :facebook,
ENV['FACEBOOK_APP_ID'],
ENV['FACEBOOK_APP_SECRET'],
scope: "email",
:setup => lambda { |env|
env['omniauth.strategy'].options[:callback_path] = "user/auth/facebook/callback"
}
end

如果我不设置 :callback_path,则身份验证会起作用,并且我会在 omniauth.auth 请求变量中取回数据。但是,我必须重写它,因为我需要支持在回调中传回一个属性。

我已经查看了 Omniauth::Strategy code看看可能出了什么问题,但我不太清楚出了什么问题。

我的问题:

  • 为什么这不起作用?
  • 有没有更好的方法来解决这个问题?

最佳答案

state 参数不应该用于传递数据(事实上,想想看,您是在信任第三方使用您的数据!)。该参数仅用于缓解 CSRF 攻击。

所以你应该做的是将你喜欢的任何参数传递给链接,如下所示:

link_to user_omniauth_authorize_path(:facebook, :some_key => 'some_data')

Omniauth 将 automatically add that data to the session并在回调中将 remove that data from the session ,让您像这样访问它:

request.env['omniauth.params']['some_key']

关于ruby-on-rails - Facebook 身份验证不适用于自定义回调路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713112/

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