2013-09-02 27 views
8

Próbuję użyć odświeżającego tokena z autouzupełniania przekierowania oAuth2 w moim skrypcie perl konsoli. Identyfikator klienta jest taki sam i prawidłowy identyfikator klienta użyłem w moim javascript i sprawdziłem go 5 razy, że jest taki sam jak w mojej konsoli Google API.Google oAuth2 nieautoryzowany_klient przez refresh_token

Tajemnica klienta jest zaznaczona dwa razy i jest poprawna.

token odświeżania został stworzony z approval_prompt=force&access_type=offline

Oto mój przykładowy kod Perl używam:

# ----------------------------------------------------------------------------------- 
my $CLIENT_ID  = 'XXXXX.apps.googleusercontent.com'; 
my $CLIENT_SECRET = 'YYYYYYYYYYY'; 
# ----------------------------------------------------------------------------------- 
# TESTING 
my $refresh_token = '1/is_5_minutes_old'; 
# ----------------------------------------------------------------------------------- 

my $string = ''; 
$string .= 'grant_type=refresh_token'; 
$string .= '&client_id=' . $CLIENT_ID; 
$string .= '&client_secret=' . $CLIENT_SECRET; 
$string .= '&refresh_token=' . $refresh_token; 

$ua = LWP::UserAgent->new; 

my $req = 
    HTTP::Request->new(POST => 'https://accounts.google.com/o/oauth2/token'); 
$req->content_type('application/x-www-form-urlencoded'); 
$req->content($string); 
print $string . "\n"; 
my $res = $ua->request($req); 
print $res->as_string; 

Odpowiedź to:

HTTP/1.1 400 Bad Request 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
Connection: close 
Date: Mon, 02 Sep 2013 10:50:26 GMT 
Pragma: no-cache 
Server: GSE 
Content-Type: application/json 
Expires: Fri, 01 Jan 1990 00:00:00 GMT 
Alternate-Protocol: 443:quic 
Client-Date: Mon, 02 Sep 2013 10:50:26 GMT 
Client-Peer: 74.125.136.84:443 
Client-Response-Num: 1 
Client-SSL-Cert-Issuer: /C=US/O=Google Inc/CN=Google Internet Authority G2 
Client-SSL-Cert-Subject: /C=US/ST=California/L=Mountain View/O=Google Inc/CN=accounts.google.com 
Client-SSL-Cipher: RC4-SHA 
Client-SSL-Warning: Peer certificate not verified 
X-Content-Type-Options: nosniff 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; mode=block 

{ 
    "error" : "unauthorized_client" 
} 

mam nadzieję, że masz pomysł na Wsparcie.

greatings

Odpowiedz

11

Nieprawidłowy klient zazwyczaj oznacza, że ​​identyfikator klienta i tajny klient nie pasują, albo nie jest literówka w jednym z nich (choć wspominając już dwukrotnie sprawdzane to!). Nic w twoim kodzie wygląda źle.

Podczas pobierania tokena odświeżania, można spróbować umieścić żeton dostępu, który przychodzi wraz z nim do punktu końcowego tokeinfo i upewniając się, że wartości dla ID klienta tam dopasować te, które zostały skonfigurowane z: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

Warto wyrzucić wniosek, aby się upewnić, że nie ma w tym pomyłki (np. Zbyt krótki nagłówek o długości treści lub podobne).

1

Zatapianie żądania jest kluczowe. Aby pomóc, oto jedno, które wcześniej upiekłem.

==POST== 
https://accounts.google.com/o/oauth2/token 
refresh_token=1/_PEzU2m71wertwertwerJUtrtrytrytryf3trytryoCo 
&client_id=612222222225 
&client_secret=Q7334534543534yKLu 
&grant_type=refresh_token 

Czy używasz krótkiej formy identyfikatora klienta, np. tylko numer?

Powiązane problemy