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

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

4b9b3361

Ответ 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 перезаписывается для использования ваших специальных обратных вызовов.

Ответ 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 сюда. Глупая ошибка с моей стороны, но легко сделать. Надеюсь это поможет