AndroidPublisher(V3)Google API Java客户端库示例

AndroidPublisher(V3)Google API Java客户端库示例,java,server,google-api-client,google-api-services-jobs,Java,Server,Google Api Client,Google Api Services Jobs,我正在为我的安全后端服务器将AndroidPublisher库从v1升级到v3。AndroidPublisher库(v3)将允许我安全地对应用内购买和订阅进行服务器端购买验证和确认 v1的现有代码不再兼容。v3库看起来更好,但我找不到以下方面的示例代码: 使用客户端JSON构建客户端凭据 使用PurchaseToken获取&确认购买 Maven设置: <project> <dependencies> <dependency> <g

我正在为我的安全后端服务器将AndroidPublisher库从v1升级到v3。AndroidPublisher库(v3)将允许我安全地对应用内购买和订阅进行服务器端购买验证和确认

v1的现有代码不再兼容。v3库看起来更好,但我找不到以下方面的示例代码:

  • 使用客户端JSON构建客户端凭据
  • 使用PurchaseToken获取
    &
    确认
    购买 Maven设置:

    <project>
      <dependencies>
        <dependency>
          <groupId>com.google.apis</groupId>
          <artifactId>google-api-services-androidpublisher</artifactId>
          <version>v3-rev103-1.25.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.api-client</groupId>
            <artifactId>google-api-client</artifactId>
            <version>1.30.2</version>
        </dependency>
      </dependencies>
    </project>
    
    
    com.google.api
    

    正在查找这样的示例:


    任何简短的示例代码都会很有帮助。

    添加以下依赖项

    compile "com.google.apis:google-api-services-androidpublisher:v3-rev103-1.25.0"
    compile "com.google.auth:google-auth-library-oauth2-http:0.17.1"
    
    然后从谷歌云控制台启用谷歌开发者播放Api库

    在凭据中,使用角色创建服务帐户密钥
    Pub/Sub-Admin
    ,并保存json文件

    在谷歌开发者控制台。 在
    设置>>开发者帐户>>API访问中
    链接您的应用程序

    然后在代码中执行以下操作以获取订阅信息

    GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream("<service-account-key-file>.json")).createScoped(AndroidPublisherScopes.ANDROIDPUBLISHER);
    
    AndroidPublisher pub = new AndroidPublisher.Builder(
            GoogleNetHttpTransport.newTrustedTransport(),
            JacksonFactory.getDefaultInstance(),
            new HttpCredentialsAdapter(credentials)
    ).setApplicationName("<app-name>").build();
    SubscriptionPurchase purchase = pub.purchases().subscriptions().get(
            "<app-package>",
            "<subscription-id>",
            "<purchase-token>"
    ).execute();
    println(purchase);
    
    GoogleCredentials credentials=GoogleCredentials.fromStream(新文件输入流(“.json”)).createScope(AndroidPublisherScopes.ANDROIDPUBLISHER);
    AndroidPublisher pub=新的AndroidPublisher.Builder(
    GoogleNetHttpTransport.newTrustedTransport(),
    JacksonFactory.getDefaultInstance(),
    新的HttpCredentialsAdapter(凭据)
    ).setApplicationName(“”.build();
    SubscriptionPurchase=pub.purchases().subscriptions().get(
    "",
    "",
    ""
    ).execute();
    println(采购);
    
    注意:如果出现此错误:

    当前用户没有足够的权限执行请求的操作 手术

    一天后再试一次,因为在启用google play开发者api并从google控制台创建服务帐户密钥后,您需要等待24到48小时,并执行以下操作

    从Google Play控制台转到(具有管理员权限):

  • 设置(左面板)开发人员帐户(左面板)用户& 权限(左面板)
  • 单击“邀请新用户”按钮
  • 输入服务帐户电子邮件(与json文件中的相同) 您正在使用和创建服务时google生成的 账户)
  • 在角色下拉菜单中选择管理员
  • 点击 发出邀请
  • @萨比回答有效

    下面是一个关于如何在kotlin中使用令牌和产品id获取(服务器端)购买的示例:

        suspend fun playstoreVerifier(productId: String, token: String) = withContext(Dispatchers.IO){
            androidPublisher.Purchases().products().get(PACKAGE_NAME, productId, token).execute()?.let {
                println("ack ${it.acknowledgementState}")
            }
        }
    

    是否有任何方法确认订阅?文档声称有一个,但它们没有提供其他内容。我能找到的唯一一个是:purchases.subscriptions().acknowledge(),但它不起作用。如果您发现一个错误,您的项目没有连接,并且您确定是,请尝试禁用并重新启用一个产品,在这个领域创建一个新产品或其他东西,它似乎会刷新Google端的内容。谢谢,这是有效的+1从控制台停用和激活应用内产品会出现错误“当前用户没有足够的权限来执行请求的操作”。走开,非常感谢您提供了这个示例,我可以确认它正在工作!如果您获得的权限不足错误,只需更改一个应用程序内产品(例如描述),它将在1-2分钟后工作(无需等待24小时+)在另一个网站上找到该提示