ruby-on-rails - rails 中的 Omniauth-twitter:OAuth::Unauthorized 401

标签 ruby-on-rails ruby twitter oauth omniauth

我在使用 Twitter 进行基本的 omniauth 身份验证时被封锁了 2 天。我在简单的 omniauth 上跟随 Ryan Bates 的 railscast,但无法通过 OAuth::Unauthorized 401 异常,当我尝试登录时引发。请帮忙!我的代码粘贴在下面:

    twitter info: 
    website: [http://127.0.0.1:3000]
    callbarck url: [http://127.0.0.1:3000/auth/twitter/callback]

//路线.rb

    Sentimentalist::Application.routes.draw do

    resources :dashboard, only: [:index]
    resources :welcome

    root :to => 'welcome#index'

    match '/auth/twitter/callback', to: 'sessions#create'

    match "/signout" => "sessions#destroy", :as=>:signout


   match ':controller(/:action(/:id))(.:format)'
end

//application.html.erb

            <!DOCTYPE html>
    <html>
    <head>
      <title>Sentimentalist</title>
      <%= stylesheet_link_tag    "application", :media => "all" %>
      <%= javascript_include_tag "application" %>
      <%= csrf_meta_tags %>
      <% yield(:head) %>
    </head>
    <body>
        <div id="container">
            <div id="user_nav">
                    <% if current_user %>
                      Welcome <%= current_user.name %>!
                      <%= link_to "Sign Out", signout_path %>
                    <% else %>
                      <%= link_to "Sign in with Twitter", "/auth/twitter" %>
                    <% end %>
            </div>
       </div>

     <%= yield %>

    </body>
    </html>

//config/initializers/omniauth.rb

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :twitter, '###', '###'
    end

// session Controller .rb

    def create
      auth = request.env["omniauth.auth"]
      user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) ||User.create_with_omniauth(auth)
      session[:user_id] = user.id
      redirect_to root_url, :notice => "Signed in!"
    end

    def destroy
      session[:user_id] = nil
      redirect_to root_url, :notice => "Signed out!"
    end

最佳答案

将应用回调 url 设置为 localhost 时出现问题。
尝试使用 url shortner 设置你的 Twitter 应用程序的回调 url。

您可以使用类似 http://goo.gl/ 的 url 缩短器并将您的回调网址替换为适合您的网址。

http://127.0.0.1:3000/auth/twitter/callback => http://goo.gl/QVYCy

关于ruby-on-rails - rails 中的 Omniauth-twitter:OAuth::Unauthorized 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930466/

相关文章:

ruby-on-rails - 是否可以 stub ActiveRecord 的保存方法

Ruby 重试语句

python - 即使出现 IOError,如何继续 python 脚本循环?

scala - 在 Scala 中导入 avro 模式

ruby-on-rails - Rails 是否支持 TCP/IP 级别的操作?

ruby-on-rails - 在 postgresql 中查找和总结具有重叠记录的日期范围

ruby-on-rails - 数据库之间的 Rake 任务复制

ruby-on-rails - API 的 URL 设计

ruby-on-rails - Flash 无法在 Facebook on Rails 应用程序中的重定向中存活

python - 如何存储来自 Tweepy 模块 Twitter API v2 的 StreamingClient.filter() 或 .sample() 的数据