Tôi đang xây dựng một Rails-API sử dụng Omniauth-facebook và Devise-token-auth với Angular và ng-token-auth cho giao diện người dùng. Tuy nhiên khi đăng nhập với facebook Tôi trình bày với các lỗi:biến không xác định cục bộ hoặc phương thức `flash 'cho # <Devise :: OmniauthCallbacksController: 0x007fb5d1741e48>
undefined local variable or method `flash' for #<Devise::OmniauthCallbacksController:0x007fd027a51e10>
Dường omniauth tự động sử dụng đèn flash middleware tuy nhiên các đường ray-api không bao gồm này và tôi đã không thành công vô hiệu hóa việc sử dụng đèn flash với omniauth . cấu hình của tôi là như sau:
application.rb:
require File.expand_path('../boot', __FILE__)
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module PathfinderApi
class Application < Rails::Application
config.active_record.raise_in_transactional_callbacks = true
config.middleware.insert_before 0, "Rack::Cors" do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
config.api_only = true
config.middleware.use ActionDispatch::Flash
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore
end
end
devise_token_auth.rb:
DeviseTokenAuth.setup do |config|
Rails.application.secrets.facebook_app_secret
config.change_headers_on_each_request = true
end
devise.rb:
Devise.setup do |config|
config.navigational_formats = [:json]
end
omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['APP_KEY'], ENV['APP_SECRET']
end
tôi đã không quản lý để vô hiệu hóa các lỗi đèn flash với:
config.navigational_formats = [:json]
và đưa ra/omniauth vẫn sử dụng đèn flash middleware và ném lỗi, bất kỳ sự giúp đỡ đánh giá cao!
Chắc chắn đúng, đã cho tôi một thời gian để tìm ra rằng quá! Thnx cho phụ lục. –
Bạn đang thiếu một số phần. Đây là cấu hình lưu trữ phiên với Omniauth. Những gì bạn thực sự muốn là làm theo hướng dẫn chính thức của họ: https://github.com/omniauth/omniauth#integrating-omniauth-into-your-rails-api – sarink