2011-12-06 28 views
15

Tôi đã cố gắng xác thực người dùng bằng cách sử dụng đá quý twitter-omniauth trong những ngày qua, nhưng không thành công. (Xác thực với facebook hoạt động hoàn hảo)OAuth :: Vô hạn 401 int twitter-omniauth gem

Tôi tiếp tục nhận được 401 Lỗi trái phép.

Tôi tìm kiếm thông qua stackoverflow, nhưng không có câu trả lời nào có thể giải quyết được sự cố của tôi.

Tôi truy cập thông tin đăng nhập twitter khi tôi thử http://127.0.0.1/users/auth/twitter. Tôi đăng nhập và tôi được chuyển hướng đến http://127.0.0.1/users/auth/twitter/callback và lỗi trái phép xảy ra.

Dưới url callback tôi đã nhập vào twitter

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

rake routes đầu ra

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"} 

Nếu bạn cần thông tin nữa, tôi sẽ cung cấp. Xin hãy giúp tôi giải quyết vấn đề này.

+0

Robert - bạn đã kiểm tra id ứng dụng và bí mật ứng dụng của bạn có chính xác trong trình khởi tạo không? Chúng có khớp với những gì Twitter đang hiển thị cho ứng dụng cục bộ của bạn không? – TallGreenTree

+0

Ngoài ra, bạn có thể đăng mã bạn có cho bộ điều khiển người dùng/omniauth_callbacks không? – TallGreenTree

+0

@TallGreenTree tôi đã kiểm tra id appication và ứng dụng bí mật nhiều lần .. nó giống nhau .... – robert

Trả lời

13

Tôi chắc rằng tôi chạy vào các vấn đề với điều này khi nó được phát ra từ localhost ...

This article nói rằng họ cho phép nó, nhưng nếu bộ nhớ phục vụ cho tôi một cách chính xác, tôi đã phải sử dụng một URL bên ngoài truy cập. Khi tôi đang thử nghiệm công cụ oauth của mình, tôi đã sử dụng DynDns và mở một cổng trong bộ định tuyến của mình.

+5

Nếu bạn đang sử dụng máy chủ cục bộ của mình. Nó hoạt động nếu bạn sử dụng một shortener url. – Benjamin

+0

Đúng - Tôi đã sử dụng ngrok và nó hoạt động như một sự quyến rũ. Cảm ơn ejlevin1 –

17

Tôi gặp sự cố này ngày hôm nay và thấy rằng tôi phải đặt URL gọi lại trong cài đặt tại dev.twitter.com trong ứng dụng của tôi. Vì vậy, hãy kiểm tra xem bạn đã đặt cài đặt URL gọi lại chưa, tôi đặt nó thành địa chỉ sản xuất dự định của mình và khi chạy ở chế độ dev cục bộ, nó sẽ chuyển hướng tốt.

Nó đề cập trong hộp nhập url gọi lại nếu để trống, nó sẽ hạn chế ứng dụng sử dụng url gọi lại.

+1

tôi đã đề cập trong câu hỏi mà tôi đã cho url gọi lại ... – robert

+1

tôi đã có cùng một vấn đề này và cung cấp url gọi lại đã sửa nó. Tôi nghĩ rằng bạn cần phải có tên miền giống như tên miền mà ứng dụng được đăng ký. Vì vậy, đối với trang web: tôi có http://www.example.com và cho url gọi lại: http://www.example.com/auth/twitter/callback Vì vậy, Kalvir đang nói không sử dụng http://127.0.0.1 làm url cơ sở, sử dụng bất kỳ thứ gì bạn đưa vào trường Trang web khi bạn đăng ký ứng dụng của mình. – wuliwong

2

Trong trường hợp của tôi, tôi đã sử dụng "Mã thông báo truy cập" và bí mật thay vì "Khóa người tiêu dùng" đã gây ra lỗi này.

+0

Khi sử dụng twitter-omniauth, bạn nên sử dụng Mã thông báo truy cập chứ không phải "khóa người dùng" – wspruijt

1

Trong trường hợp của tôi, chúng tôi đã sử dụng đá quý Timecop và nó đã khiến đá quý omniauth-twitter thất bại vì xung đột với thời gian máy chủ cục bộ được đặt bởi timecop.

1

Tôi đã gặp sự cố này vì tôi đã đặt khóa trong môi trường của mình trong ~/.bash_profile, nhưng tôi chưa bao giờ lấy mã đó. Khi tôi mở một thiết bị đầu cuối mới, nó hoạt động tốt.

1

Dường như Twitter đã thêm hộp kiểm trên tab Cài đặt ứng dụng.

Ở cuối ngăn "Chi tiết ứng dụng", bạn phải chọn hộp "Cho phép ứng dụng này được sử dụng để Đăng nhập bằng Twitter".

Sau khi kiểm tra và chờ một vài phút khi hộp cảnh báo cho tôi biết tất cả bắt đầu hoạt động.

Các vấn đề liên quan