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 по умолчанию от Гугл?
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-сервисы-youtube v3-rev99-1.17.0-rc и google-api-сервисы-youtubeAnalytics v1-rev35-1.17.0-rc
4 ответов
когда ваш браузер перенаправляет пользователя на страницу OAuth Google, вы передаете в качестве параметра URI перенаправления, на который вы хотите вернуть сервер Google с ответом токена? Установка URI перенаправления в консоли-это не способ сообщить Google, куда идти, когда происходит попытка входа в систему, а скорее способ сообщить Google, какие разрешенные URI перенаправления (поэтому, если кто-то другой пишет веб-приложение с вашим идентификатором клиента, но другим URI перенаправления он будет запрещен); ваше веб-приложение следует, когда кто-то нажимает кнопку "Войти", отправить браузеру:
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 перезаписывается для использования ваших конкретных обратных вызовов.
Я думаю, что столкнулся с той же проблемой, что и вы. Я решил эту проблему со следующими шагами:
1) Перейти к Консоль Разработчиков Google
2) установить JavaScript origins:
3) Установить Перенаправление URIs:
вам нужно зайти в консоль разработчика и установить
http://localhost:8080/WEBAPP/youtube-callback.html
в качестве URL обратного вызова.
видео немного устарел, поскольку он показывает старую консоль разработчика вместо новой, однако концепции все равно должны применяться. Вам нужно найти свой проект в консоли разработчика и зарегистрировать URL обратного вызова.
я смог заставить мою работу работать, используя следующие учетные данные клиента:
авторизованные JavaScript origins
http://localhost
авторизованный перенаправление URIs
http://localhost:8090/oauth2callback
Примечание: я использовал порт 8090 вместо 8080, но это не имеет значения, пока ваш скрипт python использует тот же порт, что и ваш client_secret.файл json.
ссылки: Python Quickstart