pav*_*163 7 java google-api-java-client kotlin google-oauth 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)
这是由于令牌无效而导致的一般错误还是身份验证问题?如果是身份验证问题,我该如何解决?如果是无效的令牌问题,我怎么知道?
更多信息:
inappproducts.list
所以,发生的原因只是因为purchaseToken
我使用的是错误的。
我没想到这是因为我认为在令牌无效的情况下,我会收到“令牌无效”错误(或类似的错误)。事实证明,Google 给出的响应非常不一致(对于无效令牌也可能给出 404)。
就我而言,问题是我正在打电话:
purchases.products.get
Run Code Online (Sandbox Code Playgroud)
代替:
purchases.subscriptions.get
Run Code Online (Sandbox Code Playgroud)
根据我的经验,如果您有HTTP 400
错误,Invalid Value
那么购买或订阅就是欺诈。
您可以查看这些购买的订单 ID 部分。可能格式XXXXXXXXXXXX.XXXXXXXXXXXX
是错误的,应该是GPA.XXXX.XXXXX.XXXXX.XXX
挠了我的头几个小时,我的所有参数都是正确的,然后好吧..我意识到我找错了树(端点)
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}
Run Code Online (Sandbox Code Playgroud)
不是这个吗
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}
Run Code Online (Sandbox Code Playgroud)
/购买/订阅/.. 与 /购买/产品/..
归档时间: |
|
查看次数: |
5901 次 |
最近记录: |