내 사이트에서 Twitter를 구현하고 트위터 omniauth로 등록하려고합니다. 나는 this Railscast을 팔로우했는데, "twitter로 로그인"링크를 클릭하면 401 Unauthorized
이 나타납니다.Omniauth가 401 권한이 없음을 반환합니다.
GET "https://stackoverflow.com/users/auth/twitter/callback?oauth_token=xxx&oauth_verifier=xxx
omniauth: (twitter) Callback phase initiated.
Processing by OmniauthCallbacksController#twitter as HTML
Parameters: {"oauth_token"=>"xxx", "oauth_verifier"=>"xxx"}
User Load (1.3ms) SELECT "users".* FROM "users" WHERE "users"."provider" = 'twitter' AND "users"."uid" = '9999' ORDER BY "users"."id" ASC LIMIT 1
(0.3ms) BEGIN
(0.2ms) COMMIT
Completed 401 Unauthorized in 13ms
나는 omniauth 컨트롤러에서 보면, 그것은 사용자를 발견했다,하지만 sign_in_and_redirect user
줄에 실패 할 것 : 나는 로그에서 볼 때 나는 이것이 참조하십시오.
config/devise.rb
에서
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def all
user = User.from_omniauth(request.env["omniauth.auth"])
if user.persisted?
# it reaches this
flash.notice = I18n.t('.devise.omniauth_callbacks.success')
sign_in_and_redirect user
else
session["devise.user_attributes"] = user.attributes
redirect_to new_user_registration_url, notice: I18n.t('.devise.omniauth_callbacks.failure')
end
end
alias_method :twitter, :all
end
: 다음 실제 값은 다음과 같이 .rvmrc
에 저장됩니다
config.omniauth :twitter, ENV.fetch("TWITTER_CONSUMER_KEY"), ENV.fetch("TWITTER_CONSUMER_SECRET")
그리고는 :
export TWITTER_CONSUMER_KEY=xxx
export TWITTER_CONSUMER_SECRET=xxx
이 아마 것을 의미한다 찾은 사용자를 로그인하려고 시도하지만 일부 유효성 검사가 실패합니다. 그러나 사용자 모델의 모든 유효성 검사를 제거하여 어떤 일이 발생했는지 확인하고 난 후에도이 오류가 발생합니다. 여기에 뭐가 잘못 됐는지 아무도 모르는 사람?
'current_user'를 포함하는'before_filter' 또는'before_action'에 대해'ApplicationController'를 검사하십시오. 당신이'OmniauthCallbacksController'에서 인증을 요구할 때 필요합니다. – Ashitaka