OAuth: làm thế nào để kiểm tra với các URL cục bộ?


154

Tôi đang cố kiểm tra các nút OAuth , nhưng tất cả chúng (Facebook, Twitter, LinkedIn) trở lại với các lỗi dường như báo hiệu rằng tôi không thể kiểm tra hoặc sử dụng chúng từ một URL cục bộ .

Làm thế nào để mọi người thường làm việc trong quá trình phát triển với công cụ OAuth nếu tất cả họ dường như yêu cầu môi trường kết nối không phải là devkhông cục bộ ?


Tôi đã trả lời vào lúc đó: stackoverflow.com/a/10410838/604511
Jesvin Jose

Câu trả lời:


133

Cập nhật tháng 10 năm 2016 : Dễ nhất bây giờ: sử dụng lvh.me luôn luôn trỏ đến 127.0.0.1.

Trả lời trước :

Do yêu cầu gọi lại được trình duyệt đưa ra, dưới dạng phản hồi chuyển hướng HTTP, bạn có thể thiết lập tệp .hosts của mình hoặc tương đương với việc trỏ tên miền không localhostđến 127.0.0.1.

Nói ví dụ bạn đăng ký cuộc gọi lại sau với Twitter : http://www.publicdomain.com/callback/. Đảm bảo rằng www.publicdomain.comtrỏ đến 127.0.0.1 trong tệp máy chủ của bạn, VÀ twitter có thể thực hiện tra cứu DNS thành công trên www.publicdomain.com, tức là tên miền cần tồn tại và cuộc gọi lại cụ thể có thể sẽ trả về 200 thông báo trạng thái nếu được yêu cầu.

CHỈNH SỬA :

Tôi vừa đọc bài viết sau: http://www.tonyamidel.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , được liên kết đến từ câu hỏi này: Twitter oAuth callbackUrl - phát triển localhost .

Để trích dẫn bài viết:

Bạn có thể sử dụng bit.ly, một dịch vụ rút ngắn URL. Chỉ cần rút ngắn [URL localhost như http // localhost: 8080 / twitter_callback] và đăng ký URL rút ngắn làm cuộc gọi lại trong ứng dụng Twitter của bạn.

Điều này sẽ dễ dàng hơn so với loay hoay trong tệp .hosts.

Lưu ý rằng bây giờ (14 tháng 8) bit.ly không cho phép chuyển tiếp liên kết đến localhost; tuy nhiên công cụ rút gọn liên kết Google hoạt động.

Chỉnh sửa PS: (18/11): Trình rút gọn liên kết Google đã ngừng hỗ trợ cho localhost hoặc 127.0.0.1.


3
Tôi nghĩ rằng máy chủ đang gọi callbackurl, và bây giờ nhận ra oauth sử dụng máy khách như một trình nhắn tin và không có liên kết nào được thực hiện giữa các máy chủ giúp việc này đơn giản hơn nhiều.
Kristian Benoit

10
Điều đáng chú ý là lvh.me thuộc sở hữu của một quý ông tên là Levi Cook (xem gist.github.com/levicook/563675 ) và nó thuộc sở hữu tư nhân. Anh ta có vẻ như là một chàng trai tốt nhưng đó không phải là một miền được ủy quyền chính thức bởi một cơ quan toàn cầu nên có thể "về mặt lý thuyết" sẽ ngừng hoạt động tại một số thời điểm.
Mario Peshev

4
Vào thời điểm viết bài, Google dường như không cho phép các tiện ích mở rộng tên miền ưa thích (như .me) trong các URL chuyển hướng. Kết quả là, lvh.me không hoạt động. Thay vào đó, tôi đã tìm thấy thành công với lacolhost.com .
PullJosh

3
Chủ sở hữu của lvh.me cũng có thể bắt đầu thu thập tất cả các mã ủy quyền của bạn ...
Taylor Buchanan

2
@JonNylander Họ có thể dễ dàng thay đổi bản ghi DNS của mình để trỏ đến một trang web khác lưu trữ mã xác thực và trạng thái và vẫn chuyển hướng trở lại localhost. Trừ khi bạn kiểm tra DNS thường xuyên, bạn sẽ không nhận thấy cho đến khi họ có quyền truy cập. Những người duy nhất sẽ nhận thấy ngay lập tức là những người sử dụng nó bên ngoài bối cảnh trình duyệt.
Taylor Hội trưởng

18

Hoặc bạn có thể sử dụng https://tolocalhost.com/ và định cấu hình cách chuyển hướng cuộc gọi lại đến trang web địa phương của bạn. Bạn có thể chỉ định tên máy chủ (nếu khác với localhost, tức là yourapp.local và số cổng). Chỉ dành cho mục đích phát triển.


13

Bạn cũng có thể sử dụng ngrok: https://ngrok.com/ . Tôi sử dụng tất cả thời gian để có một máy chủ công cộng chạy trên localhost của tôi. Hi vọng điêu nay co ich.

Một tùy chọn khác thậm chí cung cấp tên miền tùy chỉnh của riêng bạn miễn phí là phục vụ.net và https://localtunnel.github.io/www/


1
Điều này dễ dàng hơn tôi nghĩ! Chỉ cần tạo tài khoản của tôi, cài đặt nó và chạy ./ngrok http 8080 -host-header="localhost:8080"và tôi đang chạy với một url công khai.
Miguel Reyes

3

Google không cho phép kiểm tra xác thực api trên localhost bằng cách sử dụng http://webporject.devhoặc .loc.etc và liên kết ngắn google cũng rút ngắn url cục bộ của bạn ( http://webporject.dev) bit.ly:). Google chỉ chấp nhận url bắt đầu http://localhost/...

Nếu bạn muốn kiểm tra google auth api, bạn nên làm theo các bước sau ...

đặt bí danh mới

nếu bạn sử dụng, openserverhãy vào bảng cài đặt và nhấp vào aliases tabvà nhấp vào thả xuống, sau đó tìm localhostvà chọn nó.

bây giờ bạn nên chọn thư mục gốc của dự án web cục bộ bằng cách nhấp vào menu thả xuống tiếp theo bên cạnh thả xuống đầu tiên.

và bấm vào một nút được gọi addvà khởi động lại opensever.

bây giờ dự án địa phương của bạn có sẵn trên liên kết này, http://localhost/ bạn cũng có thể dán url cục bộ này vào google auth api vào redirect urltrường ...


3

Bạn có thể chỉnh sửa tệp máy chủ trên windows hoặc linux Windows: C: \ Windows \ System32 \ Driver \ etc \ hosts Linux: / etc / hosts

độ phân giải tên localhost được xử lý trong chính DNS.

127.0.0.1 mywebsite.com

sau khi bạn hoàn thành bài kiểm tra của mình, bạn chỉ cần bình luận dòng bạn thêm vào để vô hiệu hóa nó

127.0.0.1 mywebsite.com


Nó làm việc cho tôi, cảm ơn. Ngoài ra, nếu bạn sử dụng ví dụ Node.js trên cổng 3000, hãy sử dụng mywebsite.com:3000
Flow3r

3

Đối với người dùng Mac, hãy chỉnh sửa /etc/hoststệp. Bạn phải sử dụng sudo vi /etc/hostsnếu nó chỉ đọc. Sau khi ủy quyền, máy chủ oauth gửi URL gọi lại và vì URL gọi lại đó được hiển thị trên trình duyệt cục bộ của bạn, cài đặt DNS cục bộ sẽ hoạt động:

127.0.0.1       mylocal.com

0

Lấy Google OAuth làm tài liệu tham khảo

  • Trong tab ứng dụng khách OAuth của bạn

    1. Thêm bạn ví dụ URI ứng dụng(http://localhost:3000) để ủy quyền JavaScript nguồn gốc URI
  • Trong màn hình đồng ý OAuth của bạn

    1. Thêm mywebsite.comvào miền ủy quyền
  • Chỉnh sửa tệp máy chủ trên windows hoặc linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsđể thêm 127.0.0.1 mywebsite.com (NB Nhận xét bất kỳ nếu có bất kỳ 127.0.0.1 nào khác)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.