Подтвердить что ты не робот

Субдомен в URI-адресах Google Консоли

У меня есть веб-приложение, которое использует google api (google drive). Приложение используется многими клиентами, и каждый клиент имеет поддомен для доступа к системе.

Итак, домен appdomain.com

И для пользователей у меня есть foo.appdomain.com, bar.appdomain.com, и т.д .appdomain.com.

Но в URI консоли переадресации Google я должен вручную поместить URL-адреса переадресации, есть ли способ, которым я могу использовать подстановочные знаки для перенаправления, чтобы заставить Google принимать любые поддомены, например: *.appdomain.com?

С этим я могу совершать вызовы авторизации google с пользовательским субдоменом в redirect_uri:

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

Ответ 1

Поддомены сопоставления подстановочных знаков не поддерживаются в Google OAuth. Вы можете попробовать использовать параметр состояния и включить в него информацию о пользователе. Этот параметр будет возвращен вам в ответе. Подробнее о состоянии здесь.

Ответ 2

Вы можете создать главный субдомен для получения всех ответов авторизации google и перенаправления на исправление субдомена с использованием параметра запроса состояния.

Например, создайте google.mydomain.com и используйте его как ваш действительный "URI перенаправления", и Apache может перенаправить этот URL-адрес каждому пользователю с функцией перенаправления (или перезаписи).

Подробнее о перенаправлении apache в http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

Вот код, который я использую:

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

Ответ 3

Ура для полезных, но ненужных обходных решений (спасибо, что усложнил себя в углу Google)....

Я использовал Google Диск с помощью javascript api, чтобы открыть сборщик файлов, получить информацию о файле /url, а затем загрузить его с помощью curl на свой сервер. Как только я наконец понял, что все мои подстановочные домены должны быть зарегистрированы, у меня был инсульт.

То, что я делаю сейчас, это следующее (это мой прецедент, используйте его, как вам нужно)

  • На странице, на которой вы находитесь, создайте событие onclick, чтобы открыть новое окно в определенном домене (https://googledrive.example.com/oauth/index.php?unique_token={some unique token}).

  • В новом всплывающем окне я выполнил всю мою проверку подлинности на Google, нажал кнопку, открыв сборщик файлов, а затем извлек по крайней мере метаданные, которые мне нужны из файла. Затем я сохранил маркер (первичный ключ), access_token, downloadurl и имя файла в моей базе данных (MySQL).

  • Вернувшись на первую страницу, я создал цикл setTimeout(), который будет запускать ajax-вызов каждую секунду с помощью того же уникального_тока, чтобы проверить, когда он был введен в базу данных. Как только он найдет это, я убью цикл, а затем извлечу содержимое и сделаю с ними, как и я (в этом случае я загрузил их через отдельный загружаемый файл script, который использует завиток для извлечения файла).

Это, очевидно, не самый лучший способ для этого, но лучше, чем вводить каждый субдомен в консольную консоль googles. Бьюсь об заклад, вы, вероятно, можете сделать это с помощью библиотек oauth на стороне сервера googles, но мой прецедент был немного сложным, и я был расстроен, потому что я был разочарован в последние 4 дня, которые я потратил на глупую интеграцию с Google.