Java 无法从Google Play Android开发者API获取订阅详细信息
我正在尝试使用Google API Client Library for Java来获取用户在我的android应用程序中购买的订阅信息。然后我得到了这个错误: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
{
"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."
}
我正在尝试以下步骤:
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小时,以使更改生效。