12

Mam aplikację internetową, która używa google api (dysk google). Aplikacja jest używana przez wielu klientów, a każdy klient ma subdomenę dostępu do systemu.Subdomena w Google Console Przekierowanie URI

Więc domena jest appdomain.com

I dla użytkowników Mam foo.appdomain.com, bar.appdomain.com, etc.appdomain.com.

Ale w URI przekierowania konsoli Google muszę ręcznie umieścić adresy URL przekierowań, czy istnieje sposób, w jaki mogę używać symboli wieloznacznych do przekierowania, aby google zaakceptować którąkolwiek z subdomen takich jak: * .appdomain.com?

Z tym mogę się nazywa zezwolenie google z subdomeny użytkownika w redirect_uri:

https://accounts.google.com/o/oauth2/auth?redirect_uri=http://foo.appdomain.com 

Odpowiedz

15

Wildcard dopasowanie subdomen nie jest obsługiwana w Google OAuth. Możesz spróbować użyć parametru stanu i podać tam informacje specyficzne dla użytkownika. Ten parametr zostanie ci zwrócony w odpowiedzi. Więcej informacji na temat stanu here.

+0

@Lito ma obejście zasugerowano powyżej pomocą param państwa. – LukePOLO

+1

@vlatko Wygląda na to, że ten link jest martwy, lub przynajmniej przekierowuje na inną stronę bez informacji "state", a ja nie mogę jej znaleźć nigdzie dobrze udokumentowanej. Widziałem sugestie, jak załadować przycisk logowania Google+ w elemencie iframe, a potem element iframe wczytać stronę nadrzędną ... wydaje się trochę koszmarem. – iopener

2

Brawo dla przydatnych jeszcze zbędnych obejścia (dzięki za komplikowania sobie w kącie Google) ....

używałem Dysku Google przy użyciu javascript api otwarcie selektora plików, pobrać plik/url informacji a następnie pobierz go za pomocą curl na mój serwer. Kiedy w końcu zdałem sobie sprawę, że wszystkie moje domeny z symbolami wieloznacznymi będą musiały zostać zarejestrowane, miałem do czynienia z udarem.

Co mam teraz zrobić jest następujący (to mój przypadek użycia, zaspokoić go do Ciebie jak trzeba)

  1. Na stronie, że jesteś na utwórz onclick zdarzenie do otwarcia nowe okno w określonej domenie (https://googledrive.example.com/oauth/index.php?unique_token={some unique token}).

  2. Na nowym wyskakującym okienku zrobiłem całe moje uwierzytelnianie dysku google, miałem przycisk do kliknięcia, który otworzył selektor plików, a następnie pobrałem przynajmniej metadane, które potrzebowałem z pliku. Następnie zapisałem token (klucz podstawowy), access_token, downloadurl i filename w mojej bazie danych (MySQL).

  3. Wracając do pierwszej strony, utworzyłem pętlę setTimeout(), która uruchamiałaby wywołanie ajax co sekundę z tym samym unikalnym_tokenem, aby sprawdzić, kiedy została wprowadzona do bazy danych. Gdy go znajdzie, zabijam pętlę, a następnie odzyskaję zawartość i robię z nimi tak, jak chcę (w tym przypadku przesłałem je za pomocą osobnego skryptu do przesyłania, który wykorzystuje curl do pobrania pliku).

Oczywiście nie jest to najlepsza metoda radzenia sobie z tym, ale jest to lepsze niż wprowadzanie każdej subdomeny do konsoli chmury Google. Założę się, że prawdopodobnie możesz to zrobić z używanymi przez niego bibliotekami outh goserwera, ale mój przypadek użycia był trochę skomplikowany i byłem zepsuty, ponieważ byłem sfrustrowany w ciągu ostatnich 4 dni, które spędziłem na głupiej małej integracji z Google.

7

Możesz utworzyć główną poddomeny, aby uzyskać wszystkie odpowiedzi auth Google i przekierować ją do właściwej subdomeny za pomocą parametru zapytania "stan".

Na przykład utwórz google.mydomain.com i użyj go jako prawidłowego "Redirect URI", a Apache będzie mógł przekierować ten URL do każdego użytkownika z funkcją przekierowania (lub ponownego pisania).

Więcej informacji o apache przekierowuje w http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

Oto kod używam:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^google\. 
RewriteCond %{QUERY_STRING} state=([a-z0-9]+) 
RewriteRule ^(.*)$ http://%1.mydomain.com/$1 [L] 
+0

Dla nginx po prostu wykonaj return 301 https: // $ arg_state $ request_uri; – LukePOLO

Powiązane problemy