首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由错误-没有与[GET] "/auth/twitter“Omniauth-twitter与devise gem匹配的路由

路由错误-没有与[GET] "/auth/twitter“Omniauth-twitter与devise gem匹配的路由
EN

Stack Overflow用户
提问于 2016-04-21 22:17:01
回答 1查看 562关注 0票数 1

我正在尝试安装omniauth-twitter,但遇到了一些问题,主要是上面概述的问题。最初我没有这个问题,但现在我有了,所以我想弄明白为什么会突然出现这个问题。我已经将消费者密钥和秘密密钥放在secrets.yml文件和我的omniauth.rb文件中,如下所示。我读了很多关于这个文件是否是必需的的冲突信息,所有这些信息都进入了devise.rb文件。我没有在我的devise.rb文件中修改或放置任何对omniauth的引用。我还确保了适当的url回调链接(http://127.0.0.1:3000/auth/twitter/callback)已经放置在twitter开发人员的网站上。

这是我的代码-

routes.rb

代码语言:javascript
复制
Rails.application.routes.draw do


  get "/auth/:provider/callback" => "social_logins#create"

  devise_for :users, :controllers => { registrations: 'registrations' }  



  resources :users
  resources :events do

    resources :bookings
  end
  # get 'welcome/index'


  authenticated :user do
    root 'events#index', as: "authenticated_root"
  end


    root 'welcome#index'


end

social_logins.controller.rb

代码语言:javascript
复制
class SocialLoginsController < ApplicationController
  def create


    @details = request.env["omniauth.auth"].to_yaml

    @provider = @details["provider"]
    @provider_id = @details["uid"]

    @user = User.where(provider: @provider, provider_id: @provider_id).first

    if @user.present?
        #sign them in
    else
        # make a new user
        @user = User.new
        @user.provider = @provider
        @user.provider_id = @provider_id

        # because of has_secure_password - will this work?
        @user.password = "AAAAAA!!"
        @user.password_confirmation = "AAAAAA!!"

        # let's save the key and secret
        @user.key = @details["credentials"]["token"]
        @user.secret = @details["credentials"]["secret"]

        # lets fill in their details
        @user.name = @details["info"]["name"]
        @user.email = @details["info"]["email"] || "aaaaa@email.com"

        @user.save!
    end


        session[:uid] = @user.id 
        flash[:success] = "You've logged in"
        redirect_to root_path
    end

end

index.html.erb

代码语言:javascript
复制
<header>
 <nav>
            <div class="links">
                <%= link_to 'Sign up', new_user_registration_path %>
                <%= link_to 'Sign in', new_user_session_path %>
                <%= link_to 'Go to Events', events_path %>
                <%= link_to "Log in with Twitter", "/auth/twitter" %>
            </div>

 </nav>         


</header>

omniauth.rb

代码语言:javascript
复制
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, Rails.application.secrets.twitter_api_key, Rails.application.secrets.twitter_api_secret
end
EN

回答 1

Stack Overflow用户

发布于 2017-03-18 03:56:46

你的用户模型中有这样的功能吗?

代码语言:javascript
复制
devise omniauth_providers: [:twitter]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36772367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档