Субдомен в консоли Google перенаправляет URIs
У меня есть веб-приложение, которое использует Google api (google drive). Приложение используется многими клиентами, и каждый клиент имеет поддомен для доступа к системе.
поэтому домен appdomain.com
и для пользователей у меня есть foo.appdomain.com, bar.appdomain.com, etc.appdomain.com.
но в Google console redirect URI я должен вручную поместить URL-адреса перенаправления, есть ли способ, которым я могу используйте подстановочные знаки для перенаправления, чтобы google принял любой из поддоменов, таких как:*.appdomain.com ?
С этим я могу сделать вызовы авторизации google с поддоменом пользователя в redirect_uri:
https://accounts.google.com/o/oauth2/auth?redirect_uri=http://foo.appdomain.com
3 ответов
подстановочные знаки, соответствующие поддоменам, не поддерживаются в Google OAuth. Вы можете попробовать использовать параметр state и включить в него информацию о пользователе. Этот параметр будет возвращен вам в ответ. Более подробная информация о состоянии здесь.
вы можете создать главный поддомен, чтобы получить все ответы Google auth и перенаправить для исправления поддомена с помощью параметра запроса "состояние".
например создать google.mydomain.com и используйте его в качестве действительного "Redirect 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/ [L]
Ура для полезных, но ненужных обходных путей (спасибо за усложнение себя в углу Google)....
я использовал Google Диск с помощью javascript api, чтобы открыть файл выбора, получить информацию о файле / url, а затем загрузить его с помощью curl на мой сервер. Как только я, наконец, понял, что все мои подстановочные домены должны быть зарегистрированы, у меня был удар.
то, что я делаю сейчас, это следующее (Это мой вариант использования, удовлетворить ваши, как вам нужно to)
на странице, на которой вы находитесь, создайте событие onclick, чтобы открыть новое окно в определенном домене (
https://googledrive.example.com/oauth/index.php?unique_token={some unique token}
).в новом всплывающем окне я сделал всю мою аутентификацию Google Диска, имел кнопку, чтобы нажать, которая открыла выбор файла, а затем извлекла по крайней мере метаданные, которые мне нужны из файла. Затем я сохранил токен (первичный ключ), access_token, downloadurl и filename в моей базе данных (MySQL).
обратно на странице первого шага я создал цикл setTimeout (), который будет запускать вызов ajax каждую секунду с тем же unique_token, чтобы проверить, когда он был введен в базу данных. Как только он найдет его, я убиваю цикл, а затем извлекаю содержимое и делаю с ними, как я буду (в этом случае я загрузил их через отдельный скрипт загрузки, который использует curl для извлечения файла).
это, очевидно, не лучший метод для обработки этого, но это лучше, чем вводить каждый поддомен в консоль Googles cloud. Бьюсь об заклад, вы, вероятно, можете сделать это с помощью библиотек googles server side OAuth, которые они используют, но мой случай использования был немного сложным, и я был капризным, потому что я был разочарован прошлыми 4 днями, которые я потратил на глупую небольшую интеграцию с google.