Tôi đã thấy các câu hỏi khác về SO về điều này (here, here và here), nhưng tôi không hài lòng với bất kỳ giải pháp nào, vì vậy tôi hỏi lại. Tôi đang bắt đầu một ứng dụng web sẽ sử dụng OAuth từ nhiều nhà cung cấp (Google, Facebook, Twitter, Yahoo) để xác thực. Tôi đang đấu tranh để tìm một cấu hình phù hợp để sử dụng cho cả môi trường phát triển địa phương và môi trường sản xuất.Sử dụng OAuth cho cả môi trường phát triển và sản xuất
Các giải pháp hàng đầu tôi đã tìm thấy là phải đăng ký nhiều ứng dụng trong mỗi nhà cung cấp, tiếp nhận một chìa khóa khác nhau của người tiêu dùng và bí mật cho mỗi:
"App sản xuất của tôi" - với một callback URI để http://www.myapp.com/callback
"Phát triển ứng dụng của tôi" - với một callback URI để http://local.myapp.com/callback
Thêm một mục để host nội bộ của bạn tập tin chỉ local.myapp.com
-127.0.0.1
và s cấu hình cho ứng dụng của bạn để sử dụng các khóa người tiêu dùng phù hợp dựa trên môi trường, và bạn tốt để đi, phải không? Tuy nhiên, ứng dụng của tôi là responsive và tôi cần kiểm tra môi trường phát triển đang chạy trên PC của mình từ nhiều thiết bị khác, như iPhone và iPad của tôi, cả hai thiết bị này đều không thể giải quyết URI gọi lại phát triển.
Giả sử tôi đã có một máy chủ DNS trên mạng của mình và có thể thêm mục nhập cho local.myapp.com
ở đó thay vì tệp máy chủ cục bộ của tôi và hiện có thể truy cập cá thể phát triển của tôi từ bất kỳ thiết bị nào trên mạng.
Nhưng nhóm phát triển của tôi đều hoạt động trên cùng một mạng cục bộ. Bây giờ, local.myapp.com
trỏ tới cùng một địa chỉ IP cho tất cả mọi người. Hãy quay trở lại để thiết lập các tập tin host trên mỗi máy tính của nhà phát triển để họ có thể làm việc độc lập từ bên trong máy trạm của họ. Bây giờ không ai có thể kiểm tra ví dụ phát triển của họ từ iPhone của họ một lần nữa. Nó hầu như không có vẻ giống như câu trả lời đúng cho mỗi nhà phát triển để đăng ký một ứng dụng với nhà cung cấp chỉ để họ có thể chỉ định một URI gọi lại duy nhất.
Thông thường khi tôi xuống đường trong cỏ dại với một giải pháp phức tạp cho một vấn đề có vẻ đơn giản, điều đó thường có nghĩa là tôi đang làm điều gì đó sai về cơ bản. Tôi có thiếu một cái gì đó về OAuth, nó không có ý định được sử dụng như thế này? Tôi bị cám dỗ để loại bỏ OAuth hoàn toàn và chỉ cần đi với OpenID (không yêu cầu đăng ký ứng dụng và có thể chỉ định URI gọi lại từ bên trong ứng dụng), nhưng sau đó tôi mất hai trong số những người lớn trong Facebook và Twitter. Tôi không thực sự cần bất kỳ dữ liệu của người dùng, nó chỉ là một tốt đẹp để có nếu nó có sẵn. Ai đó có thể nói lại với tôi về OAuth không?
chỉ để thử nghiệm đúng không? Tại sao không có mỗi ứng dụng web như một thư mục ảo? – codemonkeh
Tôi không thực sự theo dõi những gì bạn đang nhận được. Bạn có thể xây dựng? – schmimd04
Bạn đã bao giờ tìm được giải pháp chưa? Tôi đang đấu tranh với chính xác điều tương tự; các nhà cung cấp oauth không cho phép các ký tự đại diện có nguồn gốc vì vậy tôi không thể có 'alice.dev.myapp.com' và' bob.dev.myapp.com' nhưng nếu tất cả các nhà phát triển chia sẻ 'dev.myapp.com' tôi không không biết cách chỉ định máy tính bảng và điện thoại tại nhà phát triển chính xác. Tạo điểm nhập oauth cho mỗi nhà phát triển có vẻ là cách duy nhất. – mczepiel