Google OAUTH: URI перенаправления в запросе не соответствовал зарегистрированному URI переадресации
Я пытаюсь сделать загрузку на YouTube с моего веб-приложения на основе Java, я потратил несколько дней, чтобы понять, что и где проблема, и я не могу это получить, пока я снимаю свои волосы со своей головы.
Я зарегистрировал свое веб-приложение в Google Консоли, поэтому я получил пару идентификаторов клиентов и секретных файлов и возможность загрузить файл типа JSON с моей конфигурацией.
Итак, вот конфигурация:
{
"web":{
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"client_secret":"***",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"client_email":"***",
"redirect_uris":["http://localhost:8080/WEBAPP/youtube-callback.html","http://www.WEBAPP.md/youtube-callback.html"],
"client_x509_cert_url":"***",
"client_id":"***",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"javascript_origins":["http://www.WEBAPP.md/"]
}
}
Как возможно, что я получаю URL-адрес по умолчанию от Google?
The redirect URI in the request: http://localhost:8080/Callback did not match a registered redirect URI
Он всегда дает мне по умолчанию http://localhost:8080/Callback
URL вместо моего.
И консоль IDE показывает мне, что:
Please open the following address in your browser:
https://accounts.google.com/o/oauth2/auth?client_id=***&redirect_uri=http://localhost:8080/Callback&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload
Attempting to open that address in the default browser now...
Я использую последнюю версию зависимостей:
google-api-services-youtube v3-rev99-1.17.0-rc и google-api-services-youtubeAnalytics v1-rev35-1.17.0-rc
Ответы
Ответ 1
Когда ваш браузер перенаправляет пользователя на страницу Google OAuth, передаете ли вы в качестве параметра URI перенаправления, на который сервер Google должен вернуться с ответным сигналом? Настройка URI переадресации в консоли - это не способ сообщить Google, куда идти, когда приходит попытка входа в систему, но скорее это способ сообщить Google, что такое разрешенные URI перенаправления (так, если кто-то другой пишет веб-приложение с вашим клиентом ID, но с другим URL-адресом перенаправления он будет запрещен); ваше веб-приложение должно, когда кто-то нажимает кнопку "Войти", отсылает браузер:
https://accounts.google.com/o/oauth2/auth?client_id=XXXXX&redirect_uri=http://localhost:8080/WEBAPP/youtube-callback.html&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload
(URI обратного вызова, передаваемый как параметр, должен быть закодирован по URL-адресу, btw).
Когда сервер Google получает авторизацию от пользователя, он перенаправляет браузер на все, что вы отправили, в качестве redirect_uri
. Он будет включать в этот запрос токен в качестве параметра, поэтому ваша страница обратного вызова может затем проверить токен, получить токен доступа и перейти к другим частям вашего приложения.
Если вы посетите:
http://code.google.com/p/google-api-java-client/wiki/OAuth2#Authorization_Code_Flow
Здесь вы можете увидеть лучшие образцы java-клиента, демонстрируя, что вам нужно переопределить метод getRedirectUri
, чтобы указать свой путь обратного вызова, поэтому значение по умолчанию не используется.
URI перенаправления находятся в файле client_secrets.json
по нескольким причинам... один большой, так что поток oAuth может подтвердить, что перенаправление вашего приложения соответствует совпадениям, что позволяет ваше приложение.
Если вы посетили https://developers.google.com/api-client-library/java/apis/youtube/v3 Вы можете создать образец приложения для себя, основанного непосредственно на вашем приложении в консоли, в котором (снова ) метод getRedirectUri перезаписывается для использования ваших специальных обратных вызовов.
Ответ 2
Думаю, я столкнулся с той же проблемой, что и вы. Я обратился к этой проблеме со следующими шагами:
1) Перейдите в Консоль разработчиков Google
2) Установите исходные коды JavaScript:
3) Установите URI перенаправления:
Ответ 3
Вам нужно зайти в консоль разработчика и установить
http://localhost:8080/WEBAPP/youtube-callback.html
в качестве URL-адреса обратного вызова.
Это видео немного устарело, так как оно показывает более старую консоль разработчика вместо новой, однако эти концепции все равно должны применяться. Вам нужно найти свой проект в консоли разработчика и зарегистрировать URL-адрес обратного вызова.
Ответ 4
Мне удалось выполнить мою работу с использованием следующих учетных данных клиента:
Авторизованные исходники JavaScript
http://localhost
Авторизованные URI перенаправления
http://localhost:8090/oauth2callback
Примечание. Я использовал порт 8090 вместо 8080, но это не имеет значения, если ваш python script использует тот же порт, что и ваш файл client_secret.json.
Ссылка: Быстрый запуск Python
Ответ 5
Я думал, что у меня это настроено, но оказалось, что я установил URL в неправильном месте. Я проследовал по URL, указанному на странице ошибок Google, и добавил свой URL сюда. Глупая ошибка с моей стороны, но легко сделать. Надеюсь это поможет