Google OAuth: URI przekierowania w zapytaniu nie pasował do zarejestrowanego URI przekierowania

Próbuję zrobić upload na YouTube z mojej aplikacji internetowej opartej na Javie, spędziłem kilka dni, aby zrozumieć, co i gdzie jest problem i nie mogę go dostać, na razie wyrywam włosy z głowy.

Zarejestrowałem swoją aplikację w konsoli Google, więc mam parę Client ID i Secret oraz możliwość pobrania pliku typu JSON z moim config.

Oto konfiguracja:

{
    "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/"]
    }
}

Jak to możliwe, że otrzymuję domyślny adres URL z Google?

The redirect URI in the request: http://localhost:8080/Callback did not match a registered redirect URI

To zawsze daje mi domyślny http://localhost:8080/Callback URL zamiast mojego.

A konsola IDE pokazuje mi, że:

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...

Używam ostatniej wersji zależności: google-api-services-youtube v3-rev99-1.17.0-RC i google-api-services-youtubeAnalytics v1-rev35-1.17.0-RC

Author: Denees, 2014-03-23

4 answers

Kiedy przeglądarka przekierowuje użytkownika na stronę oAuth Google, czy przekazujesz jako parametr URI przekierowania, do którego chcesz, aby serwer Google wrócił z odpowiedzią tokena? Ustawienie URI przekierowania w konsoli nie jest sposobem na poinformowanie Google, gdzie się udać, gdy nadejdzie próba zalogowania, ale raczej jest sposobem na poinformowanie Google, jakie są dozwolone URI przekierowania (więc jeśli ktoś inny napisze aplikację internetową z Twoim ID klienta, ale innym URI przekierowania, zostanie to zabronione);, gdy ktoś kliknie przycisk "Zaloguj się", wyślij przeglądarkę na adres:

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 wywołania zwrotnego przekazany jako parametr musi być zakodowany url, btw).

Gdy serwer Google otrzyma autoryzację od użytkownika, przekieruje przeglądarkę do tego, co wysłałeś jako redirect_uri. Będzie zawierać w tym żądaniu token jako parametr, więc strona zwrotna może następnie zweryfikować token, uzyskać token dostępu i przejść do innych części aplikacji.

Jeśli wizyta:

Http://code.google.com/p/google-api-java-client/wiki/OAuth2#Authorization_Code_Flow

Możesz zobaczyć tam lepsze próbki klienta java, pokazując, że musisz nadpisać metodę getRedirectUri, aby określić ścieżkę wywołania zwrotnego, aby nie była używana domyślna.

Adresy Uri przekierowań znajdują się w pliku client_secrets.json z wielu powodów ... jednym dużym jest to, że przepływ oAuth może sprawdzić, czy przekierowanie aplikacji określa dopasowanie do tego, na co pozwala aplikacja.

Jeśli odwiedzisz https://developers.google.com/api-client-library/java/apis/youtube/v3 możesz wygenerować dla siebie przykładową aplikację, która jest oparta bezpośrednio na Twojej aplikacji w konsoli, w której (ponownie) metoda getRedirectUri jest nadpisana, aby użyć konkretnych wywołań zwrotnych.

 28
Author: jlmcdonald,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-19 10:12:54

Myślę, że napotkałem ten sam problem co Ty. Rozwiązałem ten problem w następujących krokach:

1) Przejdź do Google Developers Console

2) Set JavaScript origins:

3) Ustaw URI Przekierowania:

 32
Author: Max,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-26 20:34:08

Musisz wejść do konsoli programisty i ustawić

http://localhost:8080/WEBAPP/youtube-callback.html

Jako adres URL wywołania zwrotnego.

Ten film jest nieco przestarzały, ponieważ pokazuje starszą konsolę dewelopera zamiast nowej, jednak koncepcje powinny nadal obowiązywać. Musisz znaleźć swój projekt w Konsoli programisty i zarejestrować adres URL wywołania zwrotnego .

 3
Author: Ikai Lan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-25 15:25:11

Udało mi się uruchomić mój przy użyciu następujących danych uwierzytelniających klienta:

Authorized JavaScript origins

http://localhost

Autoryzowany URI przekierowania

http://localhost:8090/oauth2callback

Uwaga: użyłem portu 8090 zamiast 8080, ale to nie ma znaczenia, o ile skrypt Pythona używa tego samego portu co client_secret.plik json.

Reference: Python Quickstart

 2
Author: myidealab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-08 01:48:32