我在使用 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/