繁体   English   中英

引发Google Awareness API SecurityException

[英]Google Awareness API SecurityException is thrown

我正在使用Google Awareness API中的 DetectedActivityFence 它在我自己的设备上工作正常,但我在Crashlytics中收到了几起关于SecurityException的崩溃事件。

Fatal Exception: java.lang.SecurityException: Invalid API Key for package = [package_name] .Status code received = -1
   at android.os.Parcel.readException(Parcel.java:1540)
   at android.os.Parcel.readException(Parcel.java:1493)
   at com.google.android.gms.common.internal.zzu$zza$zza.zza(Unknown Source)
   at com.google.android.gms.common.internal.zzd.zzqz(Unknown Source)
   at com.google.android.gms.internal.zzpw$zzc.zzapl(Unknown Source)
   at com.google.android.gms.internal.zzpw$zzf.run(Unknown Source)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
   at com.google.android.gms.internal.zzrn.run(Unknown Source)
   at java.lang.Thread.run(Thread.java:818)

这种情况在Android版本之间没有任何相关性,即它影响来自不同制造商和不同Android版本(5.x-6.x)的设备。 这些设备没有root,看起来像在Stock ROM上工作。 10%的用户会出现此问题。

我确定我使用的是正确的API密钥,否则我可以在自己的设备上看到崩溃,是吗?

有没有人面临同样的问题?

有一个错误错误地将网络操作中的一些错误错误地认证为应用程序,因为表明API密钥未正确设置,即使实际错误是其他错误。 这已在内部修复,并将在下一个Google Play服务版本中推出。

目前,最好的解决方法是在调用GoogleApiClient.connect()的线程上添加UncaughtExceptionHandler。 如果在主线程上调用GoogleApiClient.connect(),则可以通过Looper.myLooper()。getThread()获取Thread实例。

来自: https//code.google.com/p/android/issues/detail?id = 223751#c2

我们的检查中存在一个错误,当有网络错误进行身份验证时,有时会抛出此SecurityException。 该修补程序将在下一版Google Play服务中推出。

目前,最好的解决方法是在您调用GoogleApiClient.connect()的线程上设置UncaughtExceptionHandler。 对于大多数人来说,这将在主线程上,您可以通过Looper.myLooper()。getThread()获得。

但是你也会注意到回复表明这不是一个可靠的工作。

您可能还会注意到该线程的OP引用了此SO帖子,但是接受的答案不会引用该线程,即使它们是逐字复制的。 非常糟糕的形式!

我遇到了这个问题,因为我遇到了同样的错误,我认为可能是Awareness API密钥未同步到Google Developer Console,经过大量查看并收到相同的错误后,我又回到了Google上的Awareness API开发者控制台并实现我的Awareness API没有启用,即使我有包装并拥有有效的API密钥。 还要确保在Manifest中设置了API密钥。 希望这有助于某人。

我挣扎了差不多一天,找到了另一个答案。 虽然当时接受的答案是正确的。

我唯一能帮助我在Google Developer Console上使用调试密钥库生成API密钥以进行测试,并在投入生产时将其替换为发布密钥库。

如何生成API密钥? 在这里查看谷歌的单词

希望它将来有助于某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM