Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从Google Play Android开发者API获取订阅详细信息_Java_Android_Google Api Java Client_Android Inapp Purchase - Fatal编程技术网

Java 无法从Google Play Android开发者API获取订阅详细信息

Java 无法从Google Play Android开发者API获取订阅详细信息,java,android,google-api-java-client,android-inapp-purchase,Java,Android,Google Api Java Client,Android Inapp Purchase,我正在尝试使用Google API Client Library for Java来获取用户在我的android应用程序中购买的订阅信息。然后我得到了这个错误: { "code" : 401, "errors" : [ { "domain" : "androidpublisher", "message" : "The current user has insufficient permissions to perform the requested opera

我正在尝试使用Google API Client Library for Java来获取用户在我的android应用程序中购买的订阅信息。然后我得到了这个错误:

  {
    "code" : 401,
    "errors" : [ {
    "domain" : "androidpublisher",
    "message" : "The current user has insufficient permissions to perform the requested operation.",
    "reason" : "permissionDenied"
  } ],
  "message" : "The current user has insufficient permissions to perform the requested operation."
 }
我正在尝试以下步骤:

  • 创建项目(或选择现有项目)
  • 创建一个角色为Pub/Sub Admin的服务帐户
  • 转到并搜索“谷歌” 播放Android开发者API“
  • 启用该API
  • 转到设置>开发人员帐户>API访问
  • 链接在步骤2中创建的项目
  • 将显示您在步骤3中创建的服务帐户
  • 授予对游戏控制台中的应用程序的财务访问权限
  • 至少等待24小时,更改才会生效
  • 我正在尝试以下代码:

            httpTransport =  new com.google.api.client.http.javanet.NetHttpTransport();
            JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();
            String applicationName = "App name";
            String packageName = "com.example.xxx";
            final Set<String> scopes = Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER);
    
            AssetManager am = getAssets();
            InputStream inputStream = am.open("key1.p12");
    
            File file = createFileFromInputStream(inputStream);
                Log.d(TAG, "file : " + file);
                if(file != null){
                    int SDK_INT = android.os.Build.VERSION.SDK_INT;
                    if (SDK_INT > 8) {
                        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                                .permitAll().build();
                        StrictMode.setThreadPolicy(policy);
    
    
                        GoogleCredential credential = new GoogleCredential.Builder()
                                .setTransport(httpTransport)
                                .setJsonFactory(jsonFactory)
                                .setServiceAccountId("pp-subscription@practice-presto-dev.iam.gserviceaccount.com").setServiceAccountScopes(scopes)
                                //.setServiceAccountId("practice-presto-subscription@practice-presto-dev.iam.gserviceaccount.com").setServiceAccountScopes(scopes)
                                .setServiceAccountPrivateKeyFromP12File(file).build();
    
                        AndroidPublisher pub = new AndroidPublisher.Builder
                                (httpTransport, jsonFactory, credential)
                                .setApplicationName(applicationName)
                                .build();
                        final AndroidPublisher.Purchases.Subscriptions.Get get =
                                pub.purchases().subscriptions().get(packageName, "sub_monthly_pro", "pcehicpbjhcdnjockiniaokh.AO-J1OxsJtLehF3z_naoXR4LE0jqiXrABAPYiZMNRMZO5jnKI9gnyHmPP7INtcc2kyptNKP_HM6MjEPQfmYWmJ8R_geonsLqMXA9TLsozqNexh-FxSvQFDZSUTgBW_azvdAJPLxPFuKd");
                        final SubscriptionPurchase purchase = get.execute();
                        Log.d(TAG, "Found google purchase item " + purchase.toPrettyString());
                    }
                }
    
    httpTransport=new com.google.api.client.http.javanet.NetHttpTransport();
    JacksonFactory jsonFactory=JacksonFactory.getDefaultInstance();
    字符串applicationName=“应用程序名称”;
    字符串packageName=“com.example.xxx”;
    最终设置范围=Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER);
    AssetManager am=getAssets();
    InputStream InputStream=am.open(“key1.p12”);
    File File=createFileFromInputStream(inputStream);
    Log.d(标签,“文件:”+文件);
    如果(文件!=null){
    int SDK_int=android.os.Build.VERSION.SDK_int;
    如果(SDK_INT>8){
    StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder()
    .permitAll().build();
    StrictMode.setThreadPolicy(策略);
    GoogleCredential credential=新建GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(jsonFactory)
    .SetServiceAccounted(“pp-subscription@practice-presto-dev.iam.gserviceaccount.com”).setServiceAccountScopes(scopes)
    //.SETSERVICEACCOUNT(“实践presto-subscription@practice-presto-dev.iam.gserviceaccount.com”).setServiceAccountScopes(scopes)
    .SetServiceAccountPrivateKeyFromp12文件(文件).build();
    AndroidPublisher pub=新的AndroidPublisher.Builder
    (httpTransport、jsonFactory、凭证)
    .setApplicationName(applicationName)
    .build();
    最终AndroidPublisher.Purchases.Subscriptions.Get=
    pub.purchases().subscriptions().get(packageName,“sub_monthly_pro”,“pcehicpbjhcdnjockiniaokh.AO-J1OxsJtLehF3z(NAOXR4LE0JQIXRABAPYZYZMNRMZO5JNKI9GNYHMP7INTCC2KYPTKP(HM6MjEPQfmYWmJ8R)geonsLqMXA9TLsozqNexh-FxSvQFDZSUTgBW(AZVDAZPLXPFUKD”);
    final SubscriptionPurchase=get.execute();
    Log.d(标记“Found google purchase item”+purchase.toPrettyString());
    }
    }
    
    我正在使用应用程序购买模式中的测试


    我想在续订订阅计划后获取最新的订阅收据。

    我在24小时后检查了错误。但在那之后,我在两天后再次检查,没有错误,数据已经收到。

    我在24小时后检查了错误。但在那之后,我在两天后再次检查,没有错误,数据已经收到。

    转到创建项目(或选择现有项目)创建一个具有发布/订阅管理员角色的服务帐户转到并搜索“Google Play Android Developer API”启用该API转到设置>开发人员帐户>API访问链接您在步骤2中创建的项目服务帐户将显示为您在步骤3中创建的服务帐户授予对该帐户的访问权限,并授予该应用程序在游戏控制台中的财务权限至少等待48小时,以使更改生效。转到创建项目(或选择现有项目)创建一个角色为Pub/Sub Admin的服务帐户转到并搜索“Google Play Android Developer API”启用该API转到转到设置>开发人员帐户>API访问链接您在步骤2中创建的项目服务帐户将显示为您在步骤3中创建的服务帐户授予对该服务的访问权限,并授予该应用程序在游戏控制台中的财务权限至少等待48小时,以使更改生效。