Вопрос по ruby-on-rails – Почему Google Oauth возвращает `invalid redirect_urI` в моем приложении на Rails?
Я добавляю Google Oauth2 в приложение Rails, но не смог пройти ранние этапы.
Я установил приложение и определил идентификатор клиента и секрет. Но я получаюInvalid parameter value for redirect_uri: Non-public domains not allowed: http://localhost/path/to/callback
Что это значит? Это потому, что я тестирую в локальной среде разработчика?
Спасибо за любые идеи.
EDIT
Это может быть связано с тем, что URI приложения отличается от URI отправителя. Но когда я захожу в Google и пытаюсь авторизовать путь к моему приложению, я получаюOAuth2 redirect is invalid
, Это ограничение использования локально размещенного приложения?
EDIT 2
Запрос, который я генерирую, выглядит следующим образом:
<code>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 </code>
Это правильно. Я пробовал это с client_id, включая и исключая.apps.googleusercontent.com
раздел. Ни то, ни другое не работает.
работающего в Ubuntu. Использование localhost не работает, так как принятый ответ выделен. Google хочет, чтобы общественное достояние.
Мое решение состояло в том, чтобы использовать & quot; example.com & quot; который является общедоступным и создает поддомен в моем файле / etc / hosts. Субдомен будет работать на моем локальном устройстве разработчика, и Google будет счастлив с доменом example.com. Я зарегистрировал редиректы через консоль гугл и у меня редирект сработал успешно.
Я добавил следующее в мой / etc / hosts:
192.168.33.100 devbox devbox.example.com
В моем случае IP был тот из моей машины. Я мог бы также использовать 127.0.0.1 вместо этого.
Моя консоль Google API (https://code.google.com/apis/console) настроенный для нового идентификатора клиента был:
"Application Type: Web Application". Via "Your site or hostname (more options)": In "Authorized Redirect URIs" I entered http://devbox.example.com/ In "Authorized JavaScript Origins" I entered http://devbox.example.com/redirect_uri
в запросе указаны детали сообщения об ошибке.
если у вас есть статический IP-адрес. я использовалhttp://www.displaymyhostname.com/ чтобы получить мое имя хоста. Я подключил его прямо вAuthorized JavaScript origins поле, когда я создал новыйWeb Application Client ID.
Постскриптум Имя моего хоста выглядело примерно так: 111.111.111.111.static.exetel.com.au
Это мой ответ на связанный вопросhttps://stackoverflow.com/a/23517146/1320083
кто нашел это, моей проблемой было сочетание нескольких вещей.
I could not get callbacks to work on a local machine. The console API console suggests it is possible, but I couldn't get it working. Not sure of this is down to the service, or to my network/ connection/ firewall/ etc.
In the API console you must specify the full redirect URI, not just the root url back to your app.
Google lists scope parameters here https://developers.google.com/gdata/faq#AuthScopes. It seems this information is outdated, and the correct format for these is now https://www.googleapis.com/auth/plus.me, https://www.googleapis.com/auth/youtube, etc. Maybe someone else can confirm this?
У меня также было несколько других вещей. Я написал полное объяснение по другому из моих вопросов здесь, на SO. К сожалению, мои комментарии были удалены, а не перемещены модератором, потому что я разместил не в том месте. Теперь я не могу вспомнить все, что я написал. Для других, сталкивающихся с подобной проблемой, не стесняйтесь комментировать, это может потрясти мою память, поэтому я могу предложить некоторые идеи
ния на лайкиhttp://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback
Проверено и работает.
helloapp
) и без установки ничего оправданного использованияhelloapp.YOUR_LOCAL_IP.xip.io
чтобы получить к нему доступ. Как объяснено наxip.io веб-сайт это просто запись DNS, которая указывает на YOUR_LOCAL_IP. В вашем приложении вы просто определяете URL обратного вызова, который хотите использовать (например,/user/auth/google_oauth2/callback
). Как только это будет сделано, вы передадите этот URL в Google для перенаправления, и это все. Ничего более :)
но обнаружил, что это действительно не проблема. Как объяснилв моем блоге вы можете использовать общедоступный URI перенаправления, даже если вы работаете на своем компьютере разработки localhost. Google просто вернет код авторизации в общедоступный URI, где вы можете вырезать и вставить его на свой локальный компьютер.