Google IAP错误:需要身份验证

时间:2015-05-16 09:41:27

标签: android in-app-billing android-billing

在我的应用程序中,当我尝试购买订阅时,我收到错误:

Authentication is required. You need to sign into your Google Account

当我定期购买(应用内商品而不是订阅)时,不会显示此对话框。

有一些有用的信息:

  1. Apk在生产中发布。订阅和应用内商品的工作时间很长。

  2. alpha / beta测试中没有apks

  3. 帐号是正确的。我已经测试了其他应用程序,它提供订阅。

  4. 使用https://code.google.com/p/marketbilling/实施应用内结算并进行一些修复,这些修复旨在避免崩溃/不支持的功能[实施在很长一段时间内没有改变,所以我不认为,就是这种情况]

  5. 订阅产品ID也是正确的。

  6. 我在几个不同的设备上尝试了几个谷歌帐户。结果是相同的 - 这个对话框。

  7. 我在Google IabV3Activity.class中看到了错误,但无法弄清楚它的根本原因:

        BasicNetwork.performRequest: Unexpected response code 403 for 
    https://android.clients.google.com/fdfe/preparePurchase
    

    有什么想法吗?

    更新 今天订阅开始工作。还不清楚,原因是什么。 我们在周末更新了Google Play中的日记说明。是原因吗? - 没有想法......

3 个答案:

答案 0 :(得分:1)

我有类似的问题。除订阅外,所有应用程序都在运行。

  

需要身份验证。您需要登录自己的Google帐户

在屏幕上,在我的日志中显示了这样的记录:

  

响应代码403   https://android.clients.google.com/fdfe/preparePurchase

  

RESPONSE_CODE = 2

表示根据android billing reference“网络连接已关闭”。

所有这些信息都毫无用处。原因是订阅服务器尚未在开发者控制台中激活。

答案 1 :(得分:0)

我们自己完成了这个问题,对我们来说,这是一个不正确的IAP ID。我们基本上在Google Play上有两款游戏,一款最终会上线,#34; GameName"以及一款仅用于测试,#34; GameName测试"。包ID也不同,com.sixminute.gamename和com.sixminute.gamename.test

要复制iOS上的工作方式(IAP对于您帐户下的不同应用程序不能使用相同的名称),我们还会为每个应用程序使用不同的SKU,com.sixminute.gamename.coinpack1和com.sixminute.gamename.test。 coinpack1。在运行时,我们获得了产品的可用项目,但对于我们的测试游戏,我们得到了错误的SKU。

所以,我们想要购买" com.sixminute.gamename.test.coinpack1",但我们错误地要求" com.sixminute.gamename.coinpack1&#34 ;在" GameName测试"之下不存在束。

对我们来说,虽然它说'#34;身份验证是必需的",这绝对是错误的消息传递,并且持有响应代码,403代表"禁止&#34 ;,但有时候这真的意味着404,"资源未找到",我认为在这种情况下这是正确的。

所以对你来说,如果你已经检查了其他所有内容,请100%确定你在购买时通过了正确的SKU,如果你确定你是,那么也许可以进行查询http://developer.android.com/training/in-app-billing/list-iab-products.html#QueryDetails以确保您尝试购买的SKU 100%存在,有效,以及所有其他。

答案 2 :(得分:0)

仍有同样的问题,我收到了这些错误:

 E/Parcel: Class not found when unmarshalling:
 com.google.android.finsky.billing.lightpurchase.PurchaseParams
                                     java.lang.ClassNotFoundException: com.google.android.finsky.billing.lightpurchase.PurchaseParams
                                         at java.lang.Class.classForName(Native Method)
                                         at java.lang.Class.forName(Class.java:204)
                                         at java.lang.Class.forName(Class.java:169)
                                         at android.os.Parcel.readParcelableCreator(Parcel.java:2091)
                                         at android.os.Parcel.readParcelable(Parcel.java:2055)
                                         at android.os.Parcel.readValue(Parcel.java:1971)
                                         at android.os.Parcel.readMapInternal(Parcel.java:2255)
                                         at android.os.Bundle.unparcel(Bundle.java:223)
                                         at android.os.Bundle.getString(Bundle.java:1082)
                                         at android.content.Intent.getStringExtra(Intent.java:4961)
                                         at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3761)
                                         at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4977)
                                         at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3391)
                                         at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254)
                                         at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3283)
                                         at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258)
                                         at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125)
                                         at android.os.Binder.execTransact(Binder.java:388)
                                         at dalvik.system.NativeStart.run(Native Method)
                                      Caused by: java.lang.NoClassDefFoundError: com/google/android/finsky/billing/lightpurchase/PurchaseParams
                                         at java.lang.Class.classForName(Native Method) 
                                         at java.lang.Class.forName(Class.java:204) 
                                         at java.lang.Class.forName(Class.java:169) 
                                         at android.os.Parcel.readParcelableCreator(Parcel.java:2091) 
                                         at android.os.Parcel.readParcelable(Parcel.java:2055) 
                                         at android.os.Parcel.readValue(Parcel.java:1971) 
                                         at android.os.Parcel.readMapInternal(Parcel.java:2255) 
                                         at android.os.Bundle.unparcel(Bundle.java:223) 
                                         at android.os.Bundle.getString(Bundle.java:1082) 
                                         at android.content.Intent.getStringExtra(Intent.java:4961) 
                                         at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3761) 
                                         at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4977) 
                                         at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3391) 
                                         at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254) 
                                         at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3283) 
                                         at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258) 
                                         at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125) 
                                         at android.os.Binder.execTransact(Binder.java:388) 
                                         at dalvik.system.NativeStart.run(Native Method) 
                                      Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.finsky.billing.lightpurchase.PurchaseParams" on path: .
                                         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64)
                                         at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
                                         at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
                                         at java.lang.Class.classForName(Native Method) 
                                         at java.lang.Class.forName(Class.java:204) 
                                         at java.lang.Class.forName(Class.java:169) 
                                         at android.os.Parcel.readParcelableCreator(Parcel.java:2091) 
                                         at android.os.Parcel.readParcelable(Parcel.java:2055) 
                                         at android.os.Parcel.readValue(Parcel.java:1971) 
                                         at android.os.Parcel.readMapInternal(Parcel.java:2255) 
                                         at android.os.Bundle.unparcel(Bundle.java:223) 
                                         at android.os.Bundle.getString(Bundle.java:1082) 
                                         at android.content.Intent.getStringExtra(Intent.java:4961) 
                                         at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3761) 
                                         at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4977) 
                                         at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3391) 
                                         at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254) 
                                         at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3283) 
                                         at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258) 
                                         at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125) 
                                         at android.os.Binder.execTransact(Binder.java:388) 
                                         at dalvik.system.NativeStart.run(Native Method) 

我也得到了这个:

E/Volley: [40089] c.a: Unexpected response code 403 for https://android.clients.google.com/fdfe/ees/preparePurchase

这有点奇怪,因为其他一些测试购买绝对正确。经过一番搜索,我发现了那个 此sku字符串中有一个空格:

public static final String SKU_ALL = " com.xxx.xxx.all "; -> ERROR
public static final String SKU_ALL = " com.xxx.xxx.all";  -> WORKS PERFECT!

希望这会对某人有所帮助!