Почему Google Oauth возвращает недопустимый redirect_urI в моем приложении Rails?
Я добавляю Google Oauth2 в приложение Rails, но не смог пройти предыдущие этапы.
Я установил приложение и определил идентификатор клиента и секрет. Но я получаю Invalid parameter value for redirect_uri: Non-public domains not allowed: http://localhost/path/to/callback
Что это значит? Это потому, что я тестирую локальную среду разработчиков?
Спасибо за любые идеи.
ИЗМЕНИТЬ
Возможно, это связано с тем, что URI приложения отличается от отправляющего URI. Но когда я иду в Google и пытаюсь разрешить путь к моему dev-приложению, я получаю OAuth2 redirect is invalid
. Является ли это ограничением использования локально размещенного приложения?
РЕДАКТИРОВАТЬ 2
Создаваемый запрос выглядит следующим образом:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=###########&redirect_uri=http%3A%2F%2Fmyapp.dev%2Fusers%2Fauth%2Fgoogle_oauth2%2Fcallback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&approval_prompt=&access_type=offline
Это правильно. Я пробовал это с помощью client_id, включая и исключая раздел .apps.googleusercontent.com
. Ничего не работает.
Ответы
Ответ 1
Для кого-либо, кто нашел это, моя проблема заключалась в сочетании нескольких вещей.
-
Я не мог получить обратные вызовы для работы на локальной машине. Консоль консоли консоли подсказывает, что это возможно, но я не мог заставить ее работать. Не уверен, что это относится к сервису или к моей сети/соединению/брандмауэру и т.д.
-
В консоли API вы должны указать полный URL-адрес перенаправления, а не только корневой URL-адрес обратно в свое приложение.
-
Google перечисляет параметры области здесь https://developers.google.com/gdata/faq#AuthScopes. Кажется, эта информация устарела, и правильный формат для них теперь https://www.googleapis.com/auth/plus.me, https://www.googleapis.com/auth/youtube и т.д. Может быть, кто-то еще может это подтвердить?
У меня было еще несколько вещей, которые продолжались. Я написал полное объяснение по поводу другого моего вопроса здесь. К сожалению, мои комментарии были удалены, а не перемещены модератором, потому что я отправил их в неправильном месте. Я не могу теперь вспомнить все, что я написал. Для других людей, сталкивающихся с подобной проблемой, не стесняйтесь комментировать, это может толкнуть мою память, поэтому я могу предложить некоторые идеи.
Ответ 2
Я получал ошибку перенаправления для моего приложения python/tornado, работающего на ubuntu. Использование localhost не помогло, так как выделенный ответ был выделен. Google хочет публичное доменное имя.
Мое решение состояло в том, чтобы скомпоновать "example.com", который является общедоступным и создает дополнительный домен в файле /etc/hosts. Поддомен будет работать на моем локальном блоке dev, и google будет доволен доменом example.com. Я регистрирую перенаправления через консоль Google, и перенаправление сработало для меня успешно.
Я добавил следующее к моему /etc/hosts:
192.168.33.100 devbox devbox.example.com
В моем случае IP-адрес моей машины. Вместо этого я мог бы использовать 127.0.0.1.
Моя консоль Google API (https://code.google.com/apis/console), настроенная для нового идентификатора клиента:
- "Тип приложения: веб-приложение".
- Через "Ваш сайт или имя хоста (дополнительные параметры)":
Ответ 3
Используя xip.io, вы можете предоставить публичный url для перенаправления на http://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback
Протестировано и работает.
Ответ 4
Я использовал свое общедоступное имя хоста. Это помогает, если у вас есть статический IP-адрес. Я использовал http://www.displaymyhostname.com/, чтобы получить имя моего хоста. Я установил его прямо в поле Авторизованное исходное происхождение JavaScript, когда я создал новый идентификатор клиента веб-приложения.
P.S. Мое имя хоста выглядело примерно так: 111.111.111.111.static.exetel.com.au
Это мой ответ на соответствующий вопрос fooobar.com/questions/129918/...
Ответ 5
Ошибка redirect_uri_mismatch. Эта ошибка может возникнуть при вводе неправильного идентификатора пакета в проекте Google Developers Console, который не соответствует идентификатору вашего пакета приложений. Убедитесь, что ваш идентификатор клиента и идентификатор пакета соответствуют значениям, отображаемым в консоли разработчика.
Ответ 6
Для меня это была функция, которая создала URL-адрес google. Я помещаю строки в строку, как только я удалял разрывы строк, URL снова работал.
Ответ 7
Я столкнулся с этой проблемой, но обнаружил, что это действительно не проблема. Как объяснено в моем блоге, вы можете использовать публичный URI редиректа, даже когда работаете на своей машине разработки localhost. Google просто вернет код авторизации в общедоступный URI, где вы можете вырезать и вставить его на локальный компьютер.