2011-12-06 3 views
15

나는 마지막 날에 twitter-omniauth 보석을 사용하여 사용자를 인증하려고했지만 아직 성공하지 못했습니다. (페이스 북 인증은 완벽하게 작동합니다.)OAuth :: Unauthorized 401 int twitter-omniauth gem

401 권한이없는 오류가 계속 발생합니다.

나는 stackoverflow를 통해 검색하지만 아무도 내 문제를 해결할 수 없습니다.

http://127.0.0.1/users/auth/twitter을 시도하면 트위터에 접속합니다. 로그인 한 후 http://127.0.0.1/users/auth/twitter/callback으로 리디렉션되며 승인되지 않은 오류가 발생합니다. 더 이상 정보가 필요하면 콜백 URL 아래

내가

http://127.0.0.1/users/auth/twitter/callback

rake routes 출력

new_user_session GET /users/sign_in(.:format)    {:action=>"new", :controller=>"devise/sessions"} 
       user_session POST /users/sign_in(.:format)    {:action=>"create", :controller=>"devise/sessions"} 
     destroy_user_session DELETE /users/sign_out(.:format)    {:action=>"destroy", :controller=>"devise/sessions"} 
     user_omniauth_callback  /users/auth/:action/callback(.:format) {:action=>/twitter|facebook/, :controller=>"users/omniauth_callbacks"} 
       user_password POST /users/password(.:format)    {:action=>"create", :controller=>"devise/passwords"} 
      new_user_password GET /users/password/new(.:format)   {:action=>"new", :controller=>"devise/passwords"} 
      edit_user_password GET /users/password/edit(.:format)   {:action=>"edit", :controller=>"devise/passwords"} 
          PUT /users/password(.:format)    {:action=>"update", :controller=>"devise/passwords"} 
    cancel_user_registration GET /users/cancel(.:format)    {:action=>"cancel", :controller=>"devise/registrations"} 
      user_registration POST /users(.:format)      {:action=>"create", :controller=>"devise/registrations"} 
     new_user_registration GET /users/sign_up(.:format)    {:action=>"new", :controller=>"devise/registrations"} 
     edit_user_registration GET /users/edit(.:format)     {:action=>"edit", :controller=>"devise/registrations"} 
          PUT /users(.:format)      {:action=>"update", :controller=>"devise/registrations"} 
          DELETE /users(.:format)      {:action=>"destroy", :controller=>"devise/registrations"} 
         login  /login(.:format)      {:action=>"login", :controller=>"home"} 
         root  /         {:controller=>"home", :action=>"index"} 

트위터

에 입력 한, 내가 제공 할 수 있습니다. 이 문제를 해결하도록 도와주세요.

+0

로버트 - 귀하의 응용 프로그램 ID와 응용 프로그램 비밀이 이니셜 라이저에서 올바른지 확인 했습니까? 트위터가 로컬 응용 프로그램에 대해 보여주는 것과 일치합니까? – TallGreenTree

+0

또한 사용자/omniauth_callbacks 컨트롤러에 대한 코드를 게시 할 수 있습니까? – TallGreenTree

+0

@TallGreenTree 나는 두 번 appification ID와 응용 프로그램 비밀을 여러 번 확인했습니다 .. 그것은 동일합니다 .... – robert

답변

13

나는

This article

그들이 그것을 허용 말한다 ... 그것은 로컬 호스트에서 오는 때 나는이와 관련된 문제로 실행 확신 해요,하지만 메모리가 올바르게 나 서비스를 제공하는 경우, 나는 외부에서 액세스 URL을 사용했다. oauth 작업을 테스트 할 때 DynDns를 사용하고 라우터에서 포트를 열었습니다.

+5

로컬 호스트를 사용하는 경우. URL 단축키를 사용하면 작동합니다. – Benjamin

+0

예 - 나는 ngrok를 사용했으며 매력처럼 작동했습니다. 감사합니다 ejlevin1 –

17

오늘이 문제가 발생하여 응용 프로그램 아래에서 dev.twitter.com의 설정에 콜백 URL을 설정해야한다는 것을 알았습니다. 그래서 당신이 콜백 URL 설정을 설정했는지 확인하고, 의도 한 프로덕션 주소로 설정하고, dev 모드에서 로컬로 실행하면 잘 리디렉션됩니다.

콜백 url 입력 상자 아래에 비워두면 앱이 콜백 URL을 사용하지 못하도록 제한한다는 것을 언급합니다.

+1

나는 콜백 URL을 부여했다는 질문에 언급했습니다 ... – robert

+1

나는이 같은 문제가 있었고 콜백 URL을 제공함으로써 그것을 고쳤습니다. 도메인을 앱이 등록 된 도메인과 동일하게 유지해야한다고 생각합니다. 그래서 웹 사이트 : 나는 http://www.example.com과 콜백 URL을 가지고있다 : http://www.example.com/auth/twitter/callback 그래서 Kalvir은 http://127.0.0.1을 사용하지 말라는 말을하고있다. 기본 URL로 앱을 등록 할 때 웹 사이트 입력란에 입력 한 내용을 사용하십시오. – wuliwong

2

제 경우에는 "액세스 토큰"을 사용했으며 "소비자 키"대신이 오류가 발생했습니다.

+0

twitter-omniauth를 사용할 때 "소비자 키"가 아닌 액세스 토큰을 사용해야합니다. – wspruijt

1

내 경우에는 Timecop 보석을 사용하고 있었기 때문에 timecop에 의해 설정된 로컬 서버 시간과의 충돌로 인해 omniauth-twitter gem이 실패하게되었습니다.

1

내 환경에서 ~/.bash_profile의 키를 입력했기 때문에이 문제가 발생했지만 결코 출처를 밝히지 않았습니다. 일단 새로운 터미널을 열면 잘 동작했습니다.

1

분명히 트위터가 앱 설정 탭에 체크 박스를 추가했습니다.

"응용 프로그램 세부 정보"창의 아래쪽에 "이 응용 프로그램을 사용하여 Twitter에 로그인하는 것을 허용합니다"라는 상자를 선택해야합니다.

알림을 확인하고 몇 분 기다리면 알림이 표시되므로 모두 작동하기 시작했습니다.