我有一个方案,当我使用真正的omniauth时工作得很好,但是当我用黄瓜/水豚的模拟auth运行它时失败了.
在回调中,当我这样做时sign_in @user,它成功创建用户并登录... current_user已设置.但是当我这样做时redirect_to request.env['omniauth.origin'] || '/',在接下来的行动中,current_user现在是零.
我已通过屏幕截图确认/暂停浏览器它不能使用模拟身份验证.firefox和chrome驱动程序中出现相同的错误.
知道为什么会发生这种情况吗?
/features/support/env.rb:
Cucumber::Rails::Database.javascript_strategy = :truncation
场景:
@javascript
Scenario:
    Given I am on the home page
    When I press "Login"
    And I should see "Login with Twitter" in the selector "#login-modal"
    Given Omniauth returns a user with provider "twitter" and uid "1" and nickname "foo"    
    When I login with Twitter
    Then I should be logged in as "foo"
步骤定义:
Given(/^Omniauth returns a user with provider "(.*?)" …一切都很好,Omniauth突然停止了工作.我没有进行任何代码更改.
我检查了Twitter应用程序设置:我有回调网址到我的主要生产网址,并且回拨网址已锁定为否.所有密钥都是正确的.
任何的想法?
的OAuth ::未经授权
403禁止
ruby-on-rails devise omniauth ruby-on-rails-5 omniauth-twitter
我正在尝试使用Devise实现Oauth Twitter.
我在twitter上创建了应用程序
我已将回调网址设置为:http:// localhost:3000
 
我已将此添加到config\initializers\devise.rb
  config.omniauth :twitter, "key", "key secret"
使用Twitter登录会自动出现在此路线:/ users/sign_up /但点击它时我收到此错误
密钥和密钥是正确的
我也尝试删除和创建新的应用程序.
我无法修复它
非常感谢帮助
我没有使用设计或其他一些类似的宝石。我对 RoR 很陌生。
这是我的routes.rb
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
Rails.application.routes.draw do
  get "about", to: "about#index"
  get "password", to: "passwords#edit", as: :edit_password
  patch "password", to: "passwords#update"
  get "password/reset", to: "password_resets#new"
  post "password/reset", to: "password_resets#create"
  get "password/reset/edit", to: "password_resets#edit"
  patch "password/reset/edit", to: "password_resets#update"
  
  get '/auth/:provider/callback', to: 'sessions#create'
  get "sign_up", to: "registrations#new"
  post "sign_up", to: "registrations#create"
  get "sign_in", to: "sessions#new"
  post "sign_in", to: "sessions#create"
  delete "logout", to: "sessions#destroy"
  root to: "main#index"
end
这是 user.rb
# email:string …我有一个应用程序,基于Rails 4.2,并尝试使用Twitter进行身份验证RailsCasts #241 Simple OmniAuth.
但是有这个问题:Validation failed: Password can't be blank!
我到处搜索答案,但没有找到解决方案!
user.rb
class User < ActiveRecord::Base
    has_secure_password
    validates :password, length: { minimum: 6 }, allow_blank: true
    def self.create_with_omniauth(auth)
        create! do |user|
            user.provider = auth.provider
            user.uid = auth.uid
            user.name = auth.info.name
        end
    end
end
sessions_controller.rb
class SessionsController < ApplicationController
   def login
   end
   def create
       @user = User.find_by_email(params[:email])
       if @user && @user.authenticate(params[:password])
           session[:user_id] = @user.id
           redirect_to root_path
       else
           redirect_to :back
       end
   end
   def create_session
       auth = request.env['omniauth.auth']
       user …