2013-01-22 11 views
11

Zajmuję się tworzeniem aplikacji gdzie użytkownicy mają własne adresy URL, i muszą korzystać z Google API - oczywiście z różnych URI przekierowania, jakJak radzić sobie z dowolną ilością przekierowań URI?

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

Więc najpierw myślałem, że może po prostu rozwiązać ten problem za pomocą symboli wieloznacznych (www.example.com/*/google/login), ale niestety nie robi nie działa w ten sposób. Potem zacząłem kodować prosty serwer proxy w Perlu, ale nie jestem pewien, czy to zadziała, a nam kończy się czas. Jaki jest najlepszy sposób radzenia sobie z sytuacją? Myślałem o dodaniu nowego przekierowania URI do konsoli z obsługi rejestracji, ale nie znalazłem żadnego sposobu, aby serwer mógł to zrobić.

+0

Patrz odpowiedź na http://stackoverflow.com/questions/7722062/google-oauth2-redirect-uri-with-several-parameters Dzięki! – Kiran

Odpowiedz

14

Symbole wieloznaczne nie są obsługiwane w przekierowaniach URI Google OAuth2. Uważam, że najlepiej jest użyć pojedynczego identyfikatora URI przekierowania i przekazać informacje o użytkowniku w parametrze state. Parametr stanu jest zwracany w odpowiedzi. Następnie, po otrzymaniu kodu/tokenów autoryzacji, możesz wyszukać parametr stanu i odpowiednio obsłużyć odpowiedź (np. Przekierowanie do adresów URL specyficznych dla użytkownika).

This answer ma więcej informacji.

+1

hmm i jak sobie z tym poradzę? Nie wydaje się tam być parametrem "stanu". Czy mogę użyć dowolnego identyfikatora przekierowania URI po otrzymaniu kodu? A może zadzwonić do rzeczywistego API? Jeśli mam token dostępu, czy mogę go użyć z dowolnego miejsca lub z jakich ograniczeń? – r1pp3rj4ck

+2

Parametr stanu przekazuje podczas przygotowywania żądania. Na przykład możesz podać tam nazwę użytkownika. Po otrzymaniu kodu autoryzacji i wymianie go na tokeny dostępu/odświeżania, będziesz mieć ważny token dostępu wraz z parametrem stanu wypełnionym nazwą użytkownika. Co z tym zrobić, zależy od twojej aplikacji. Jednym z głównych ograniczeń tokenów dostępu jest to, że jest krótki (możesz sprawdzić parametr expires_in w odpowiedzi, myślę, że to 3600 sekund). Będziesz więc musiał okresowo wymieniać swój długo odświeżony token na token dostępu. – vlatko

+0

Dziękujemy! Właściwie to rozwiązałem całą sprawę, zanim odpowiedziałeś na mój komentarz, ale to wciąż usuwa kilka rzeczy. – r1pp3rj4ck

Powiązane problemy