2013-09-02 26 views
8

Tôi đang cố sử dụng mã thông báo làm mới từ xác thực chuyển hướng web oAuth2 trong tập lệnh perl trên bảng điều khiển của mình. Các id khách hàng là cùng một id khách hàng chính xác và tôi được sử dụng trong javascript của tôi một tôi đã kiểm tra nó 5 lần nó ist giống như tôi có trong giao diện điều khiển của Google API của tôi.Google oAuth2 authorized_client by refresh_token

Bí mật của khách hàng được chọn hai và điều đó là chính xác.

Các dấu hiệu làm mới được tạo ra với approval_prompt=force&access_type=offline

Dưới đây là mẫu mã perl của tôi sử dụng:

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

Câu trả lời của nó:

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

tôi hy vọng bạn có một ý tưởng Cứu giúp.

greatings

Trả lời

11

khách hàng không hợp lệ thường có nghĩa là ID của khách hàng và bí mật của khách hàng không phù hợp, hoặc có một lỗi đánh máy trong một trong số họ (mặc dù bạn đề cập đến bạn đã hai lần kiểm tra này!). Không có gì trong mã của bạn có vẻ sai.

Khi bạn lấy token làm mới, bạn có thể thử đặt thẻ truy cập mà đến cùng với nó vào thiết bị đầu cuối tokeinfo và đảm bảo các giá trị cho ID khách hàng có phù hợp với những bạn đã cấu hình với: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

Nó có thể là giá trị bán phá giá ra yêu cầu để đảm bảo không có một sai lầm trong đó (ví dụ như quá ngắn một tiêu đề nội dung chiều dài hoặc tương tự).

1

Việc giải quyết yêu cầu là chìa khóa. Để trợ giúp, đây là lần tôi đã nướng trước đó ..

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

Bạn đang sử dụng dạng ngắn của id ứng dụng, tức là. chỉ là số?

Các vấn đề liên quan