2012-07-12 23 views
7

Google ma przykładowy klient OAuth2 hereGoogle OAuth2 przykład wiersza polecenia

jestem nowy na completelly OAuth2 i chciałbym, aby ten przykład działa zanim przejdę do integracji OAuth2 z mojej aplikacji. Co mam zrobić, to:

  1. Zarejestruj aplikację testową
  2. Get ID Client i Client Tajny
  3. Skonfiguruj te wartości do client_secrets.json
  4. Uruchom aplikację Test: python moderator.py

Aplikacja otwiera przeglądarkę, w której mogę (jako użytkownik) autoryzować aplikację, aby uzyskać dostęp do mojego konta. Ale Google nie narzeka tak (400 Bad Request):

Error: redirect_uri_mismatch 
The redirect URI in the request: http://localhost:8080/ did not match a registered redirect URI 
Learn more 
Request Details 
from_login=1 
scope=https://www.googleapis.com/auth/moderator 
response_type=code 
access_type=offline 
redirect_uri=http://localhost:8080/ 
approval_prompt=auto 
as=-xxxxxxxxxxxxx 
pli=1 
client_id=xxxxxxxxxxx.apps.googleusercontent.com 
authuser=0 
hl=en 

Chyba localhost: 8080 pochodzi z wewnętrznego serwera WWW rozpoczętej przez moderator.py. Moje pytanie brzmi: czy ktoś dał przykład do działania? Jakie inne składniki są potrzebne (konfiguracja apache, DNS, ...)

Jestem bardzo zdezorientowany z OAuth2 i każda pomoc byłaby bardzo doceniana.

Odpowiedz

0

W OAuth 2.0 parametr redirect_uri jest zwykle rejestrowany u dostawcy. Dostawca powinien również wymuszać redirect_uri tylko w https.

Musisz zarejestrować redirect_uri z Google tutaj: https://code.google.com/apis/console/?pli=1#access

+3

Zarejestrowałem już moją aplikację testową w konsoli Google API, ale uruchomię aplikację z wiersza poleceń (nazywa się to "przykładem wiersza poleceń"). Nie mam identyfikatora URI, do którego mogę przekierować. Gdzie lub jak należy uruchomić ten przykład, aby użytkownik mógł autoryzować moją aplikację do uzyskiwania dostępu do danych użytkownika. To tylko prosty przykład, aby zrozumieć, jak działa OAuth2, ale nie mogę go uruchomić. – dangonfast

2

Przede wszystkim, przepraszam, jeśli moja odpowiedź nie jest bardzo precyzyjna, bo jestem również bardzo nowy OAuth (a nawet python) ... a także przepraszam, jeśli przyszło za późno, zazwyczaj nie mam tutaj dostępu.

Czy próbowali za pomocą tego (pracował dla mnie): REDIRECT_URI = 'urn: IETF: WG: OAuth: 2,0: OOB'

Zaznacz to: https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi

Here Mam kawałek kodu z pełnym przepływem OAuth.

+0

To jest poprawna odpowiedź dla aplikacji konsolowych –

0

Być może spróbuj zarejestrować swój zewnętrzny adres IP za pomocą Google (może wymagać jakiegoś portu do przodu na routerze)? Jeśli to się nie powiedzie, może będziesz mógł użyć SimpleServer'a Pythona, zarejestrować swój adres IP i uzyskać ten serwer do obsługi przekierowania.

0

Twój redirect_uri jest ustawiony na „http://localhost:8080/”, ponieważ przechodzą domyślny (nie wiem jak to opisać) flags parametr do run_flow (przepływowe, przechowywanie, flagi)

jeśli spojrzeć na zdefiniowanie dla Funkcja run_flow() znajdziesz:

It presumes it is run from a command-line application and supports the 
following flags: 

    ``--auth_host_name`` (string, default: ``localhost``) 
     Host name to use when running a local web server to handle 
     redirects during OAuth authorization. 

    ``--auth_host_port`` (integer, default: ``[8080, 8090]``) 
     Port to use when running a local web server to handle redirects 
     during OAuth authorization. Repeat this option to specify a list 
     of values. 

    ``--[no]auth_local_webserver`` (boolean, default: ``True``) 
     Run a local web server to handle redirects during OAuth 
     authorization. 
Powiązane problemy