2012-07-05 16 views
10

次のリクエストを行うと、Googleではエラー503しか表示せず、有用な情報を提供しません。サブスクリプショントークンのGoogle Android Subscription API有効期限を取得します。

私はここにドキュメントを以下のよ:https://developers.google.com/android-publisher/v1/purchases/get

許可トークンが最近(自動的に)更新されます。 (通常、それが古くなったら401と表示されます)

[[email protected] cgi-bin]# wget -dSO- 'https://www.googleapis.com/androidpublisher/v1/applications/com.kizbit.pairfinder/subscriptions/subscription99/purchases/vkorjajxnjfyhxbftpymwfox?access_token=ya29.AHES6ZSnxLdOVf2QWrX96VbpDMdUKlHFXJOFEdHM_f_ErQlL' 
Setting --server-response (serverresponse) to 1 
Setting --output-document (outputdocument) to - 
DEBUG output created by Wget 1.12 on linux-gnu. 

--2012-07-05 00:09:46-- https://www.googleapis.com/androidpublisher/v1/applications/com.kizbit.pairfinder/subscriptions/subscription99/purchases/vkorjajxnjfyhxbftpymwfox?access_token=ya29.AHES6ZSnxLdOVf2QWrX96VbpDMdUKlHFXJOFEdHM_f_ErQlL 
Resolving www.googleapis.com... 2001:4860:b007::5f, 74.125.142.95 
Caching www.googleapis.com => 2001:4860:b007::5f 74.125.142.95 
Connecting to www.googleapis.com|2001:4860:b007::5f|:443... connected. 
Created socket 3. 
Releasing 0x0000000000cc9370 (new refcount 1). 
Initiating SSL handshake. 
Handshake successful; connected socket 3 to SSL handle 0x0000000000cd8e70 
certificate: 
    subject: /C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.googleapis.com 
    issuer: /C=US/O=Google Inc/CN=Google Internet Authority 
X509 certificate successfully verified and matches host www.googleapis.com 

---request begin--- 
GET /androidpublisher/v1/applications/com.kizbit.pairfinder/subscriptions/subscription99/purchases/vkorjajxnjfyhxbftpymwfox?access_token=ya29.AHES6ZSnxLdOVf2QWrX96VbpDMdUKlHFXJOFEdHM_f_ErQlL HTTP/1.0 
User-Agent: Wget/1.12 (linux-gnu) 
Accept: */* 
Host: www.googleapis.com 
Connection: Keep-Alive 

---request end--- 
HTTP request sent, awaiting response... 
---response begin--- 
HTTP/1.0 503 Service Unavailable 
Content-Type: application/json; charset=UTF-8 
Date: Thu, 05 Jul 2012 04:09:56 GMT 
Expires: Thu, 05 Jul 2012 04:09:56 GMT 
Cache-Control: private, max-age=0 
X-Content-Type-Options: nosniff 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; mode=block 
Server: GSE 

---response end--- 

    HTTP/1.0 503 Service Unavailable 
    Content-Type: application/json; charset=UTF-8 
    Date: Thu, 05 Jul 2012 04:09:56 GMT 
    Expires: Thu, 05 Jul 2012 04:09:56 GMT 
    Cache-Control: private, max-age=0 
    X-Content-Type-Options: nosniff 
    X-Frame-Options: SAMEORIGIN 
    X-XSS-Protection: 1; mode=block 
    Server: GSE 
Closed 3/SSL 0x0000000000cd8e70 
2012-07-05 00:09:47 ERROR 503: Service Unavailable. 
+0

この問題はまだ解決していますか?私は同じ問題を経験した。 – tszming

+0

はい、しかし、私は方法を知らない。それはちょうど働き始めた。 1)アクセストークンは非常に短い時間で、たぶん10秒でよいので、スクリプトやコードを使用して詳細を認証しフェッチする必要があります。 2)パッケージを公開する必要があります。 3)サブスクリプショントークンは実際に支払われなければなりません。 4)サブスクリプションIDを発行する必要があります。 – Chloe

+0

はい、Googleが問題を修正したようです。 – tszming

答えて

1

@imrankhan Perlでこれを行う方法は次のとおりです。

sub refreshAccessToken { 
    my $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('grant_type=refresh_token&client_id=9999999.apps.googleusercontent.com&client_secret=xxxxxxxxxxxxxxxx&refresh_token='.$REFRESH_TOKEN); 
    # grant_type=refresh_token 
    # client_id=<the client ID token created in the APIs Console> 
    # client_secret=<the client secret corresponding to the client ID> 
    # refresh_token=<the refresh token from the very first authorization step> 
    my $res = $ua->request($req); 
    if ($res->is_success()) { # parse JSON 
     #print $res->content . "\n"; 
     # { 
      # "access_token" : "ya29.AHES3ZQ_MxxxxTeSl530Na2", 
      # "token_type" : "Bearer", 
      # "expires_in" : 3600, 
     # } 
     my $json = decode_json($res->content); 
     my $accessToken = $json->{'access_token'}; 
     saveAccessToken($accessToken); 
    } else { 
     serverError($ERROR_GOOGLE, 'Could not refresh subscription access token from Google server. '.$res->status_line); 
     exit; 
    } 
} 
関連する問題