Tôi nhận (twitter) Authentication failure! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized
lỗi sau khi thăn thành công đến twitter và trang được chuyển hướng đến trang đăng nhậpXác thực thất bại: Vạch + OmniAuth + Twitter
Dưới đây là cấu hình ứng dụng
routes.rb
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise.rb
config.omniauth :twitter, "KEY", "SECRET"
omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def twitter
auth = env["omniauth.auth"]
Rails.logger.info("auth is **************** #{auth.to_yaml}")
@user = user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.new
if @user.persisted?
flash[:notice] = I18n.t "devise.omniauth_callbacks.success"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.twitter_uid"] = auth["uid"]
redirect_to new_user_registration_url
end
end
end
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid
# attr_accessible :title, :body
end
index.html.erb
<h3>Home</h3>
<%if user_signed_in? %>
<div><%="Welcome #{current_user.email}"%></div>
<div><%=link_to "Logout", destroy_user_session_path, method: :delete%></div>
<%else%>
<div><%=link_to "Sign in twitter", user_omniauth_authorize_path(:twitter)%></div>
<%end%>
điều khiển đăng nhập
Started GET "https://stackoverflow.com/users/auth/twitter" for 127.0.0.1 at 2012-07-09 18:58:16 +0530
(twitter) Callback phase initiated.
(twitter) Callback phase initiated.
(twitter) Authentication failure! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized
Started GET "https://stackoverflow.com/users/auth/twitter/callback?oauth_token=rLCEqgAWPtoIzce475sacKwoqU5baEdz0JnmldXE&oauth_verifier=xYPoz2LZGHQlmz4akoVGkarPtZTebCOmeWzPUqLcPA" for 127.0.0.1 at 2012-07-09 18:58:48 +0530
Processing by Users::OmniauthCallbacksController#failure as HTML
Parameters: {"oauth_token"=>"rLCEqgAWPtoIzce475sacKwoqU5baEdz0JnmldXE", "oauth_verifier"=>"xYPoz2LZGHQlmz4akoVGkarPtZTebCOmeWzPUqLcPA"}
Redirected to http://localhost:3000/users/sign_in
URL Callback trong dev.twitter.com Trước đó nó đã http://127.0.0.1:3000
. Từ Devise, Omniauth and Twitter Tôi đã đổi số này thành http://127.0.0.1:3000/auth/twitter/callback
nhưng vẫn gặp lỗi
Có ai vui lòng trợ giúp ở đây để khắc phục sự cố không?
Cảm ơn, Amit Patel
Bạn có khóa và bí mật chính xác trong 'devise.rb' không? –
Có. Tôi đã cấu hình nó đúng cách. Hôm nay tôi đã xác định được sự cố. Tôi cũng đã cấu hình cào như đề xuất trong câu trả lời dưới đây. Tôi chỉ đơn giản là loại bỏ omniauth.rb và khởi động lại máy chủ và nó bắt đầu làm việc. –