2013-09-02 11 views
8

Ich versuche, ein Refresh-Token von der OAuth2 Web Redirect-Authentifizierung in meinem Konsolen-Perl-Skript zu verwenden. Die Client-ID ist die gleiche und korrekte Client-ID, die ich in meinem Javascript verwendet habe. Ich habe es 5 Mal überprüft, dass es dasselbe ist wie in meiner Google API-Konsole.Google oAuth2 unauthorized_client von refresh_token

Das Clientgeheimnis wird zwei überprüft und es ist korrekt.

# ----------------------------------------------------------------------------------- 
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; 

Die Antwort darauf: Hier ist mein Perl-Beispielcode i verwenden

Die Aktualisierungs-Token wurde mit approval_prompt=force&access_type=offline

erstellt

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" 
} 

Ich hoffe, Sie haben eine Idee Hilfe.

greatings

Antwort

11

Ungültige Client in der Regel bedeutet, dass die Client-ID und Client-Schlüssel nicht übereinstimmen, oder es ist ein Tippfehler in einem von ihnen (auch wenn man Ihnen erwähnt das Doppelte überprüft haben!). Nichts in deinem Code sieht falsch aus.

Wenn Sie den Aktualisierungs-Token abrufen, könnte versuchen, den Zugriffstoken setzen die zusammen mit ihm in den tokeinfo Endpunkt kommt und sicherstellen, dass es die Werte für die Client-ID mit denen übereinstimmen, die Sie konfiguriert haben: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

Es kann sich lohnen, die Anfrage zu verwerfen, um sicherzustellen, dass kein Fehler darin besteht (z. B. ein zu kurzer Inhaltszeilenkopf oder Ähnliches).

1

Das Dumping der Anfrage ist der Schlüssel. Um zu helfen, hier ist eine, die ich früher gebacken habe.

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

Verwenden Sie die Kurzform der Client-ID, dh. nur die Nummer?

Verwandte Themen