2013-01-22 52 views
11

Tôi đang phát triển một ứng dụng mà người sử dụng có URL riêng của họ, và họ cần phải sử dụng Google API - dĩ nhiên với URI chuyển hướng khác nhau, nhưCách xử lý số lượng URI chuyển hướng tùy ý?

  • www.example.com/johndoe/google/login
  • www.example.com/foobar/google/login

Vì vậy, đầu tiên tôi nghĩ rằng tôi chỉ đơn giản là có thể giải quyết vấn đề này bằng cách sử dụng ký tự đại diện (www.example.com/*/google/login), nhưng nó không may doesn Làm việc theo cách đó. Sau đó, tôi bắt đầu viết một proxy đơn giản trong Perl, nhưng tôi không chắc nó có hoạt động hay không và chúng tôi đã hết thời gian. Cách tốt nhất để giải quyết tình huống là gì? Tôi nghĩ về việc thêm một URI chuyển hướng mới vào giao diện điều khiển từ trình xử lý đăng ký, nhưng tôi không tìm thấy bất kỳ cách nào máy chủ có thể thực hiện việc này.

+0

Xem câu trả lời trên http://stackoverflow.com/questions/7722062/google-oauth2-redirect-uri-with-several-parameters Cảm ơn! – Kiran

Trả lời

14

Ký tự đại diện không được hỗ trợ trong URI chuyển hướng Google OAuth2. Tôi nghĩ tốt nhất của bạn là sử dụng một URI chuyển hướng duy nhất và chuyển thông tin người dùng trong thông số trạng thái. Tham số trạng thái được trả về cho bạn để trả lời. Sau đó, khi bạn nhận được mã/mã ủy quyền, bạn có thể tra cứu tham số trạng thái và xử lý phản hồi một cách thích hợp (ví dụ: chuyển hướng đến URL của người dùng cụ thể của bạn).

This answer có thêm thông tin.

+1

hmm và làm cách nào để xử lý phản hồi? Có vẻ như không phải là tham số "trạng thái" ở đó. Hoặc tôi có thể sử dụng bất kỳ URI chuyển hướng nào sau khi nhận được mã không? Làm thế nào về việc gọi một API thực tế? Nếu tôi có mã thông báo truy cập, tôi có thể sử dụng mã thông báo đó từ bất kỳ đâu hoặc các giới hạn không? – r1pp3rj4ck

+2

Bạn vượt qua tham số trạng thái khi bạn chuẩn bị yêu cầu. Ví dụ: bạn có thể bao gồm tên người dùng ở đó. Sau khi bạn nhận được mã ủy quyền và trao đổi nó cho mã thông báo truy cập/làm mới, bạn sẽ có một mã thông báo truy cập hợp lệ cùng với thông số trạng thái được điền bằng tên người dùng. Phải làm gì với ứng dụng của bạn. Một hạn chế lớn trên mã thông báo truy cập là nó ngắn ngủi (bạn có thể kiểm tra tham số expires_in trong phản hồi, tôi nghĩ là 3600 giây). Vì vậy, bạn sẽ cần phải trao đổi mã thông báo làm mới lâu dài của mình cho mã thông báo truy cập định kỳ. – vlatko

+0

Cảm ơn bạn! Trên thực tế, tôi đã giải quyết toàn bộ điều trước khi bạn trả lời bình luận của tôi, nhưng nó vẫn xóa một vài điều. – r1pp3rj4ck

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