gpt4 book ai didi

java - 无法从 Google Play Android Developer API 获取订阅详细信息

转载 作者:行者123 更新时间:2023-11-30 05:03:29 27 4
gpt4 key购买 nike

我正在尝试使用适用于 Java 的 Google API 客户端库来获取有关用户在我的 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."
}

我正在尝试这些步骤:

  1. 转到 https://console.cloud.google.com
  2. 创建项目(或选择现有项目)
  3. 创建角色为 Pub/Sub Admin 的服务帐户
  4. 转到 https://console.cloud.google.com/apis/library并搜索“谷歌玩转 Android 开发者 API”
  5. 启用该 API
  6. 转到 https://play.google.com/apps/publish
  7. 转到“设置”>“开发者帐户”>“API 访问”
  8. 链接您在第 2 步中创建的项目
  9. 将显示您在第 3 步中创建的服务帐户
  10. 在 Play 控制台中授予对应用的财务权限
  11. 等待至少 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());
}
}

我正在使用测试应用内购买模式。

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

最佳答案

在 Google API 控制台帐户中要做的事情

  1. 创建项目(或选择现有项目)
  2. 创建角色为 Pub/Sub Admin 的服务帐户
  3. 从 API 库中启用“Google Play Android Developer API”

在 Google Play 控制台帐户中可以做的事情

  1. 转到“设置”>“开发者帐户”>“API 访问”
  2. 将项目与您在第 2 步中创建的服务帐户相关联
  3. 在 Play 控制台中向该应用授予财务访问权限,并等待至少 48 小时以使更改生效。

其他要记住的事情

  • 您的应用需要上传到您的控制台帐户(alpha、beta、production)中的轨道之一,并获得计费库和许可。
  • 您的订阅应该是活跃的
  • 在创建产品后等待几个小时

关于java - 无法从 Google Play Android Developer API 获取订阅详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57799133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com