Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Google IAP错误:需要身份验证_Android_In App Billing_Android Billing - Fatal编程技术网

Android Google IAP错误:需要身份验证

Android Google IAP错误:需要身份验证,android,in-app-billing,android-billing,Android,In App Billing,Android Billing,在我的应用程序中,当我尝试购买订阅时,会出现以下错误: Authentication is required. You need to sign into your Google Account 当我进行常规购买(应用程序内项目,而非订阅)时,不会显示此对话框 这里有一些有用的信息: Apk在生产中发布。订阅和应用程序内项目的工作时间很长 alpha/beta测试中没有APK 帐户是正确的。我已经用其他提供订阅的应用程序进行了测试 应用内计费是通过使用一些修复来实现的,这些修复是为了避免崩溃/

在我的应用程序中,当我尝试购买订阅时,会出现以下错误:

Authentication is required. You need to sign into your Google Account
当我进行常规购买(应用程序内项目,而非订阅)时,不会显示此对话框

这里有一些有用的信息:

  • Apk在生产中发布。订阅和应用程序内项目的工作时间很长

  • alpha/beta测试中没有APK

  • 帐户是正确的。我已经用其他提供订阅的应用程序进行了测试

  • 应用内计费是通过使用一些修复来实现的,这些修复是为了避免崩溃/不受支持的功能[实现在很长一段时间内没有改变,所以我认为情况并非如此]

  • 订阅产品ID也正确

  • 我在几个不同的设备上尝试了几个谷歌账户。结果是一样的-这个对话框

  • 我在Google IabV3Activity.class中看到了错误,但无法找出其根本原因:

        BasicNetwork.performRequest: Unexpected response code 403 for 
    https://android.clients.google.com/fdfe/preparePurchase
    
    有什么想法吗

    更新: 今天开始工作。还不清楚原因是什么。
    我们在周末更新了Google Play上的日志描述。这是原因吗没有想法…

    我们自己刚刚讨论了这个问题,对我们来说,这是一个不正确的IAP ID。我们在Google Play上基本上有两个游戏,一个是“游戏名”,另一个是只用于测试的“游戏名测试”。捆绑包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”,这在“gamename测试”捆绑包中并不存在

    所以对我们来说,虽然它说“需要身份验证”,但这绝对是不正确的消息传递,这与响应代码保持一致,403代表“禁止”,但有时这实际上意味着404“未找到资源”,我认为在这种情况下这是正确的


    因此,对于您来说,如果您已经检查了所有其他内容,请确保您在购买尝试时100%传递了正确的SKU,如果您确定传递了正确的SKU,也可以进行查询,以确保您尝试购买的SKU在那里100%处于活动状态,以及所有其他状态。

    仍然存在相同的问题,我遇到了以下错误:

     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!
    

    希望这能帮助别人

    我有同样的问题。除订阅外,所有in应用程序均已运行

    需要进行身份验证。你需要登录你的谷歌账户

    在屏幕上和我的日志中显示了以下记录:

    响应代码403

    响应代码=2

    这意味着“网络连接已断开”


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

    请检查您是否使用正确的帐户登录google play应用程序。另外,据我所知,您不能从开发者帐户订阅(您的应用程序是从该acc发布的)。更新了问题的详细信息谢谢您的详细解释,但正如我在问题中提到的,ID是正确的。我的主要观点是,在讨论身份验证时,这可能是错误的,在我们的情况下,这肯定是错误的,因此,您可能需要考虑其他问题。对于所有可能影响您的关键签名问题,您可能还希望确保您也可以轻松登录到Google Play。如果这也失败了,它会提供关于出错原因的更详细的日志记录,这也会直接关系到IAP为什么不工作。对于100%确认您使用的SKU是正确的,您是否在设备上进行了库存查询,以查看它们是否可用/它们处于什么状态?不,我没有。现在由于某种原因问题消失了。。。不知道为什么,所以看起来这不是SKU的问题,但无论如何,谢谢你的帮助日志。可能这一问题在几天后会再次出现,因此我将按照您的建议进行处理。