いくつかの非消耗品の inApp 製品を含むアプリを開発しています。Google サーバーにリクエストを直接送信して結果を受け取ることで、それらの購入ステータスを取得する必要があります。私が理解しているように、「Purchase Status API」はその可能性を提供しますが、私にとってはうまくいきません。「Google API コンソール」で必要なすべての設定を行いました。「Google Play Android Developer API」をオンにしました。アプリのクライアント ID を作成しました。ここで説明されているメソッドを使用しようとしました: http://developer.android.com/google/play-services/auth.html しかし、メソッド GoogleAuthUtil.getToken(); および GoogleAuthUtil.getTokenWithNotification(); 「不明な例外」をスローしています。ただし、次のコードを使用してアクセス トークンを取得できました。
AccountManager acountM=AccountManager.get(Utils.curentActivity);
Account[] acount=acountM.getAccountsByType("com.google");
String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/androidpublisher";
AccountManagerFuture<Bundle> future=acountM.getAuthToken(acount[0], AUTH_TOKEN_TYPE, null, Utils.curentActivity, null, null);
try{
String token=future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
}catch(Exception e){e.printStackTrace();}
しかし、この後、このトークンをどうするかわかりません。このように認証しようとすると:
URL url=new URL("https://www.googleapis.com/oauth2/v1/userinfo?access_token="+token);
URLConnection conection=url.openConnection();
conection.setDoInput(true);
conection.connect();
InputStream is=conection.getInputStream();
「ファイルが見つからない例外」がスローされます。商品の購入状況を取得しようとすると、次のようになります。
String packageName=MainActivity.this.getPackageName();
String productId="SKU_KEY_1";
HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet("https://www.googleapis.com/androidpublisher/v1.1/applications/"+packageName+"/inapp/"+productId+"/purchases/"+token);
HttpResponse response=client.execute(get);
InputStream is=response.getEntity().getContent();
String result=Utils.readInputStream(is);
is.close();
結果は次のような JSON になります。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
私は数日間必死に解決策を探しています。誰かがこの点に関する解決策または最新のドキュメントを提供してくれれば幸いです。