Java 如何使用购买状态API

Java 如何使用购买状态API,java,android,eclipse,Java,Android,Eclipse,我正在开发一个应用程序,其中有几个非消耗品的inApp产品,我需要通过直接向Google服务器发送请求并接收结果来获取这些产品的购买状态。据我所知,“购买状态API”提供了这种可能性,但它不适合我。我在“谷歌API控制台”中进行了所有必要的设置: 打开“Google Play Android开发者API”。 为我的应用程序创建了客户端ID。 我尝试使用这里描述的方法: 但是方法是GoogleAuthUtil.getToken();和GoogleAuthUtil.getTokenWithNotif

我正在开发一个应用程序,其中有几个非消耗品的inApp产品,我需要通过直接向Google服务器发送请求并接收结果来获取这些产品的购买状态。据我所知,“购买状态API”提供了这种可能性,但它不适合我。我在“谷歌API控制台”中进行了所有必要的设置: 打开“Google Play Android开发者API”。 为我的应用程序创建了客户端ID。 我尝试使用这里描述的方法: 但是方法是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();}
它向我抛出一个“文件未找到异常”。 如果我尝试获取产品的购买状态:

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,如下所示:

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();
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}

几天来我一直在拼命寻找解决办法。如果有人能为我提供一个解决方案或关于这一点的最新文档,我将非常高兴

查看您的代码和信息,我会尝试几件事,首先验证您的访问令牌。我已将其用作参考。使用浏览器和一个简单的html页面(见下文),我能够获取令牌并验证它。您需要填写该页上指定的值

首先确保您的令牌是正确的。我是通过在浏览器中使用userinfo地址来实现的

下一步,您将应用购买html位置需要?在 如果您注意到上面页面中关于授权的“访问API”部分,则需要添加此部分

这是我用来帮助获取测试令牌的网页。请注意,这是用于测试的,不会作为最终解决方案使用,因为授权令牌只在短时间内有效。您需要确保获取该访问令牌的代码正常工作。 此外,请再次参阅上面的页面,为您的产品填写此信息。在这个页面中唯一动态的是来自该页面上的说明的“code”值

希望这些能对你有所帮助




哦,确保在检查此问题的解决方案时打开了Google Play Android开发者API。