问题:我一直在使用Google的Python脚本示例将apk上传到Play商店并获取通过我的帐户发布的应用列表(list_apks.py和upload_apk.py).然而最近它开始打破.我试图通过这样做来更新类似的软件包google-api-python-client,但它没有帮助.oath2clientpip install --update packagename
日志:
这个如果在列出apk的时候:
Determining latest version for my.package.name...
error 25-Feb-2016 06:30:52 Traceback (most recent call last):
error 25-Feb-2016 06:30:52 File "list_apks.py", line 80, in <module>
error 25-Feb-2016 06:30:52 main()
error 25-Feb-2016 06:30:52 File "list_apks.py", line 46, in main
error 25-Feb-2016 06:30:52 credentials = client.SignedJwtAssertionCredentials(
error 25-Feb-2016 06:30:52 AttributeError: 'module' object has no attribute 'SignedJwtAssertionCredentials'
build 25-Feb-2016 06:30:52 Found latest APK version:
build 25-Feb-2016 06:30:52 Generated …Run Code Online (Sandbox Code Playgroud) python android attributeerror oauth2client google-play-developer-api
我的问题与此类似。但是,我使用带有服务帐户的API Java 客户端库,从我的服务器调用 API。
我的代码遵循本指南,非常简单。但是,对于我的请求,我似乎无法得到适当的错误。这就是我构建我的方式AndroidPublisher:
val credential = GoogleCredential.fromStream(FileInputStream(
"/path/to/json"
)).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER))
androidPublisher = AndroidPublisher.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(packageName)
.build()
Run Code Online (Sandbox Code Playgroud)
JSON 是从开发人员控制台生成的,位于服务帐户下。这是我提出请求的方式:
androidPublisher.purchases().subscriptions().get(packageName, "valid-sku", "invalid-token").execute()
Run Code Online (Sandbox Code Playgroud)
我的订阅 ID 有效,但我的令牌无效。我希望响应中出现诸如“无效令牌”之类的错误。但是,我得到的是:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Invalid Value",
"reason" : "invalid"
} ],
"message" : "Invalid Value"
}
Run Code Online (Sandbox Code Playgroud)
这是由于令牌无效而导致的一般错误还是身份验证问题?如果是身份验证问题,我该如何解决?如果是无效的令牌问题,我怎么知道?
更多信息:
java google-api-java-client kotlin google-oauth google-play-developer-api
我们已将我们的一个应用程序发布到 Google Play,但是,我们有一位法国用户想要下载我们的应用程序,但它没有出现在 Google Play 中,即使它出现在美国这里。
有谁知道如何在其他国家/地区提供该应用程序?
android google-play google-play-developer-api google-play-console
我目前正在我的 Android 应用上测试 Google Play 的应用内订阅计费库。我已经创建了订阅并将我的应用程序发布到内部测试轨道。但是,当我尝试完成结算流程时,我的应用程序因未知原因崩溃。发生这种情况时我正在发送崩溃报告,但是当我在 ANR 和崩溃报告中查看我的 android 生命体征时,我的崩溃报告数据无处可寻。相反,谷歌控制台说我“没有发现所选标准的错误”。
为什么我的崩溃数据没有注册?我在这里做错了什么?我只想找出我的错误在哪里。我必须将我的应用程序作为一个版本进行测试,否则 google billing api 将无法工作。例如,当尝试在我的模拟器上进行测试时,我收到错误响应代码 5,它表示我的应用程序未设置为应用程序内计费。在内部测试轨道上进行测试时,我通过了此检查并开始了我的计费流程,但随后它就崩溃了。
请帮忙!
android android-testing android-billing android-developer-api google-play-developer-api
我按照本教程:https://medium.com/@infinitesimal_/doing-android-purchase-validation-api-v3-in-java-5c46fc837368
但我不能让它发挥作用!我能得到的就是:
{
"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."
}
Run Code Online (Sandbox Code Playgroud)
这是我的java代码:
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();
String applicationName = "My App";
String packageName = "com.my.package";
final Set<String> scopes = Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER);
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("myAccoutId")
.setServiceAccountScopes(scopes) …Run Code Online (Sandbox Code Playgroud) android in-app-purchase service-accounts google-play-developer-api google-play-console
我已经配置并使用 API 上传 .apk 文件,并且使用此代码文件可以完美运行。
"""Uploads an apk to the alpha track."""
import argparse
import sys
from apiclient import sample_tools
from oauth2client import client
TRACK = 'alpha' # Can be 'alpha', beta', 'production' or 'rollout'
# Declare command-line flags.
argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('package_name',
help='The package name. Example: com.android.sample')
argparser.add_argument('apk_file',
nargs='?',
default='test.apk',
help='The path to the APK file to upload.')
def main(argv):
# Authenticate and construct service.
service, flags = sample_tools.init(
argv,
'androidpublisher',
'v3',
__doc__,
__file__, parents=[argparser],
scope='https://www.googleapis.com/auth/androidpublisher')
# Process flags …Run Code Online (Sandbox Code Playgroud) Google Play 管理中心中的 Google Play 电子邮件列表管理区域允许管理员输入逗号分隔的电子邮件地址或上传 CSV。Google Play Console 提供了一个 httpPOST到https://play.google.com/apps/publish/testersemaillist?account={account}
是否可以通过 API 管理这些列表?上面的似乎不适合非谷歌使用。
我看到有一个 Google Play 开发者 API,但我没有看到任何看起来允许管理电子邮件列表的内容。 这是我发现的最接近的东西,它允许更新与测试跟踪相关的 Google 网上论坛或 Google+ 社区,但不能更新电子邮件列表。
以下是将 Beta 测试人员添加到 Test Flight 的文档:
google-api google-api-python-client google-play-developer-api google-play-console
我想了解用户是否从 MainActivity 主动订阅了 Basic/Premium 内容。有一个BillingClientLifecycle类启动订阅过程。据我了解,queryPurchses应该显示用户是否有活动订阅。但显然它显示(通过我放在那里显示订阅状态的 Toasts)用户被订阅,即使用户实际上没有订阅。
public void queryPurchases() {
if (!billingClient.isReady()) {
Log.e(TAG, "queryPurchases: BillingClient is not ready");
}
Log.d(TAG, "queryPurchases: SUBS");
Purchase.PurchasesResult result = billingClient.queryPurchases(BillingClient.SkuType.SUBS);
if (result == null) {
Log.i(TAG, "queryPurchases: null purchase result");
processPurchases(null);
///
Toast.makeText(applicationContext,"queryPurchases: null purchase result", Toast.LENGTH_SHORT).show();
} else {
if (result.getPurchasesList() == null) {
Log.i(TAG, "queryPurchases: null purchase list");
processPurchases(null);
///
Toast.makeText(applicationContext,"queryPurchases: null purchase list", Toast.LENGTH_SHORT).show();
} else {
processPurchases(result.getPurchasesList());
///
Toast.makeText(applicationContext,"user has subscription!", Toast.LENGTH_SHORT).show();
}
}
} …Run Code Online (Sandbox Code Playgroud) android android-studio in-app-subscription google-play-developer-api play-billing-library
我正在尝试创建网络流程以在 Play 商店上发布应用程序。
这是代码:
- name: Upload to Google Play
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJson: ${{ SERVICE_ACCOUNT_JSON }}
packageName: packagename
releaseFile: app/release/app.aab
track: internal
whatsNewDirectory: distribution/whatsnew
Run Code Online (Sandbox Code Playgroud)
但无法理解如何在 serviceAccountJson 键处传递 JSON 服务帐户文件位置?
我需要将文件存储在本地并传递路径还是需要将文件添加到Github Secret中?
github google-play google-play-developer-api google-play-console github-actions
每次您向 Google Play 发布应用程序的哪怕是最微小的更新时,您都必须等待审核过程完成才能发布更新。这个审查过程最坏的情况下可能需要一周的时间(因为可怜的谷歌正在与新冠病毒作斗争,嘘嘘)。
不管怎样,有没有办法通过一些 API 准确地知道它何时被审核和发布?我知道他们有电子邮件通知,但我需要使这个过程更加自动化。我不介意每隔几分钟发送一个请求来获取我的应用程序的状态。到目前为止,我已经研究了 google play console API,但我找不到任何获取应用程序状态的方法。
最有可能的是,谷歌(像往常一样愚蠢)没有提供任何方法来正确地做到这一点。也许我可以通过直接解析 google play console HTML 页面来做到这一点?当然,如果它不违反谷歌的服务条款。谢谢。
android ×6
google-play ×3
python ×2
github ×1
google-api ×1
google-oauth ×1
java ×1
kotlin ×1
oauth2client ×1