2010-12-30 36 views
22

Tôi đang cố gắng thiết lập Omniauth như được mô tả trong số Railscast này. Trong khi nó hoạt động với Twitter, tôi không thể làm cho nó hoạt động với Facebook. Tôi cũng thiết lập 'http://localhost:3000' như SITEURL và 'localhost' như miền nhưng vẫn thấy thông báo lỗi sau trong trình duyệt:Xác thực Facebook Omniauth trên localhost

Invalid redirect_uri: Given URL is not allowed by the Application configuration. 

Có ai trong các bạn có bất cứ đề nghị về làm thế nào để sửa lỗi này? Cảm ơn trước.

+0

Tôi không nghĩ rằng tôi đã thêm bất kỳ cấu hình nào ngoại trừ 'http://0.0.0.0:3000/'. Khi bạn khởi động máy chủ Rails cục bộ, địa chỉ IP sẽ sử dụng địa chỉ IP nào? – monocle

+0

Nó nói http://0.0.0.0:3000. Bạn đã thêm điều gì vào tệp lưu trữ của mình? –

+0

Tôi chưa bao giờ sửa đổi tệp lưu trữ của mình. Nó có 127.0.0.1 cho localhost. – monocle

Trả lời

32

Hãy xem chuyển hướng trong URI. Tôi đọc localhost: 3000 vì vậy tôi đã thay đổi URL của trang web thành "http: // localhost: 3000 /" và nó hoạt động.

+2

Bây giờ nó hoạt động! Cảm ơn rất nhiều. Sau đó tôi chạy theo vấn đề này http://stackoverflow.com/questions/3977303/omniauth-facebook-certificate-verify-failed.Tôi đã làm theo lời khuyên đưa ra trong câu trả lời và một lỗi khác đã xảy ra: Không có tuyến đường khớp với "/ auth/failure" .. –

+2

Có cách nào để kiểm tra trong localhost và vẫn có ứng dụng hoạt động trên môi trường sản xuất không? Ý tôi là, tôi chỉ có thể truy cập ứng dụng của mình thông qua facebook và tôi muốn tiếp tục thử nghiệm tại địa phương mà không cần để thay đổi số phận chuyển hướng trên Facebook. –

+1

cuối cùng một người nào đó trong ngăn xếp với một câu trả lời hoàn hảo cho shit này! cảm ơn –

7

Hãy thử sử dụng

http://0.0.0.0:3000/ 

cho 'Site URL'. Điều này làm việc cho tôi. (Ngoài ra, tôi không có bất kỳ điều gì trong trường 'Tên miền Trang web'.)

+0

vẫn nhận được lỗi tương tự sau khi làm theo lời khuyên của bạn. bạn đã thêm bất kỳ dòng nào vào hostfile của bạn chưa? Tôi bắt đầu mất đi sự tỉnh táo vì điều này ..: ( –

+0

Rails cuối cùng không chuyển đổi '127.0.0.1' thành' localhost', có thể cấp quyền truy cập ngay bây giờ, cảm ơn. –

28

Đây là những gì phù hợp với tôi.

Ngay bây giờ Facebook không cho phép đặt Tên miền trang web thành IP, do đó, không thể đặt URL trang web thành http://127.0.0.1:3000/ vì sau đó Facebook sẽ khiếu nại rằng URL không khớp với tên miền.

Vì vậy, trong Facebook App của bạn thiết lập:

Site URL: http://localhost:3000/ 
Domain: localhost 

Khi bạn truy cập vào ứng dụng trên máy dev của bạn chắc chắn rằng bạn gõ vào localhost: 3000 trong trình duyệt. Nếu bạn sử dụng 127.0.0.1:3000 OmniAuth sẽ sử dụng nó trong url gọi lại nó sẽ gửi đến Facebook và sau đó Facebook sẽ ném lỗi Ryan đề cập ở trên.

+0

bạn định đặt những cái đó ở đâu? Trong tệp nào? – kibaekr

+0

@kibaekr trong trang tổng quan ứng dụng facebook của bạn https://developers.facebook.com/apps/YOUR_APP_ID/summary –

+0

Có cách nào để kiểm tra trong máy chủ cục bộ và vẫn có ứng dụng hoạt động trên môi trường sản xuất không? Ý tôi là, tôi chỉ có thể truy cập ứng dụng của mình thông qua facebook và tôi muốn tiếp tục thử nghiệm tại địa phương mà không phải thay đổi số phận chuyển hướng trên Facebook –

15

Tôi chuyển sang http://lvh.me:3000 trong trình duyệt địa phương để kiểm tra facebook cục bộ. Sau đó, trong cài đặt ứng dụng facebook, hãy đặt lvh.me tên miền của bạn.

lvh.me là tên miền đã đăng ký trỏ đến 127.0.0.1 mà nhà phát triển đã mua để kiểm tra tên miền phụ cục bộ.

+0

Mẹo hay. Cảm ơn! – bikedorkseattle

0

Nếu bạn đang ở trên OSX bạn có thể sử dụng pow http://pow.cx/ để đổi tên localhost để

http://yourapp-dev 

(là không thực sự đổi tên, nó được thêm vào)

bạn có thể thiết lập đó là một tên miền hợp lệ trên facebook.

+3

Bạn đã thử điều đó chưa? Bởi vì tôi đã có một vấn đề với nó. Facebook không cho phép địa chỉ .dev. – Shmidt

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