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

Почему 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. Ничего не работает.

4b9b3361

Ответ 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), настроенная для нового идентификатора клиента:

  • "Тип приложения: веб-приложение".
  • Через "Ваш сайт или имя хоста (дополнительные параметры)":

Ответ 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, где вы можете вырезать и вставить его на локальный компьютер.