尝试连接 Google 意识服务时收到错误
Receiving error when trying to connect with Google Awareness services
我正在尝试使用 google 的意识 api,并将 GoogleApiClient 的实例注册到意识 api,但我收到一个错误,我可以'到处都找不到。
我已按照手册操作,并在 api 领事馆中启用了感知服务。
https://developers.google.com/awareness/android-api/get-started
这是我的清单的样子:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.awarenesstests">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.awareness.API_KEY"
android:value="MY_KEY_GENERATED_IN_THE_DEVELOPER_CONSULE" />
</application>
</manifest>
非常简单的注册:
GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
.addApi(Awareness.API).build();
googleApiClient.connect();
这是我收到的错误 - 包的 API 密钥无效 = com.test.awarenesstests。收到的状态代码 = 6
请注意日志的开头有些奇怪,对 google 服务进行 ping 并返回 403,它看起来与最终错误有关。
07-10 15:35:50.745 29260-29490/? E/Volley: [6925] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/usercontext/v1/controllerhub/ping
07-10 15:35:50.750 29260-29260/? E/ctxmgr: [BaseServerTask]Server task (PingTask) got error response.
com.android.volley.AuthFailureError
at com.android.volley.toolbox.BasicNetwork.performRequest(:com.google.android.gms:159)
at ipb.performRequest(:com.google.android.gms:64)
at com.android.volley.NetworkDispatcher.run(:com.google.android.gms:113)
07-10 15:35:50.755 29260-15589/? W/ctxmgr: [ContextManager3PCredentialsVerifier]Received a failed ping response with status code = 6
07-10 15:35:50.755 29260-29275/? E/AbstractServiceBroker: Getting service failed
java.lang.SecurityException: Invalid API Key for package = com.test.awarenesstests .Status code received = 6
at bti.a(:com.google.android.gms:109)
at btl.a(:com.google.android.gms:5046)
at iht.a(:com.google.android.gms:592)
at ikn.onTransact(:com.google.android.gms:824)
at android.os.Binder.execTransact(Binder.java:446)
07-10 15:35:50.756 9603-9603/com.test.awarenesstests D/AndroidRuntime: Shutting down VM
07-10 15:35:50.757 9603-9603/com.test.awarenesstests E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test.awarenesstests, PID: 9603
java.lang.SecurityException: Invalid API Key for package = com.test.awarenesstests .Status code received = 6
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at com.google.android.gms.common.internal.zzu$zza$zza.zza(Unknown Source)
at com.google.android.gms.common.internal.zzd.zza(Unknown Source)
at com.google.android.gms.internal.zzqb$zzc.zzapi(Unknown Source)
at com.google.android.gms.internal.zzqb$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.zzrs.run(Unknown Source)
at java.lang.Thread.run(Thread.java:818)
您唯一可以从堆栈跟踪中读出的是您的 API-Key 未被接受。所以你得到一个 403-forbidden。你生成的 api-key 对吗?也许您的 SHA1 指纹不正确?
我遇到了同样的问题。 检查 应用程序 build.gradle 文件中的 applicationId。对我来说,我在 API 键的 console.developers.google.com 上设置的 applicationId 和包名称不一样。我想他们必须是一样的。修复名称后,它对我有用。希望对你有用。
从开发人员控制台启用 Awareness Api,它将正常工作
这是一个已知错误。当 GoogleApiClient 在 connect()
中遇到网络错误时,它会抛出 SecurityException。
非常烦人,但你没有做错任何事情(只要你使用正确的密钥)
我的情况略有不同。我有 3 个构建变体
- 发展
- 分期
- 生产
所以我有 3 个单独的 google-services.json,每个有 3 个变体。除此之外,我还把下面的代码放在了 development API 键的清单中。
<meta-data
android:name="com.google.android.awareness.API_KEY"
android:value="<API_KEY_OF_DEVELOPMENT_ENVIRONEMT>" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="API_KEY_OF_DEVELOPMENT_ENVIRONEMT" />
当我使用生产环境制作签名的 apk 时,我遇到了同样的错误。应用从 AndroidManifest.xml 而不是 google-services.json 获取 API 密钥。
所以我注释掉了清单文件中的 API 键,然后问题就解决了。
我正在尝试使用 google 的意识 api,并将 GoogleApiClient 的实例注册到意识 api,但我收到一个错误,我可以'到处都找不到。
我已按照手册操作,并在 api 领事馆中启用了感知服务。 https://developers.google.com/awareness/android-api/get-started
这是我的清单的样子:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.awarenesstests">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.awareness.API_KEY"
android:value="MY_KEY_GENERATED_IN_THE_DEVELOPER_CONSULE" />
</application>
</manifest>
非常简单的注册:
GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
.addApi(Awareness.API).build();
googleApiClient.connect();
这是我收到的错误 - 包的 API 密钥无效 = com.test.awarenesstests。收到的状态代码 = 6
请注意日志的开头有些奇怪,对 google 服务进行 ping 并返回 403,它看起来与最终错误有关。
07-10 15:35:50.745 29260-29490/? E/Volley: [6925] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/usercontext/v1/controllerhub/ping
07-10 15:35:50.750 29260-29260/? E/ctxmgr: [BaseServerTask]Server task (PingTask) got error response.
com.android.volley.AuthFailureError
at com.android.volley.toolbox.BasicNetwork.performRequest(:com.google.android.gms:159)
at ipb.performRequest(:com.google.android.gms:64)
at com.android.volley.NetworkDispatcher.run(:com.google.android.gms:113)
07-10 15:35:50.755 29260-15589/? W/ctxmgr: [ContextManager3PCredentialsVerifier]Received a failed ping response with status code = 6
07-10 15:35:50.755 29260-29275/? E/AbstractServiceBroker: Getting service failed
java.lang.SecurityException: Invalid API Key for package = com.test.awarenesstests .Status code received = 6
at bti.a(:com.google.android.gms:109)
at btl.a(:com.google.android.gms:5046)
at iht.a(:com.google.android.gms:592)
at ikn.onTransact(:com.google.android.gms:824)
at android.os.Binder.execTransact(Binder.java:446)
07-10 15:35:50.756 9603-9603/com.test.awarenesstests D/AndroidRuntime: Shutting down VM
07-10 15:35:50.757 9603-9603/com.test.awarenesstests E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test.awarenesstests, PID: 9603
java.lang.SecurityException: Invalid API Key for package = com.test.awarenesstests .Status code received = 6
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at com.google.android.gms.common.internal.zzu$zza$zza.zza(Unknown Source)
at com.google.android.gms.common.internal.zzd.zza(Unknown Source)
at com.google.android.gms.internal.zzqb$zzc.zzapi(Unknown Source)
at com.google.android.gms.internal.zzqb$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.zzrs.run(Unknown Source)
at java.lang.Thread.run(Thread.java:818)
您唯一可以从堆栈跟踪中读出的是您的 API-Key 未被接受。所以你得到一个 403-forbidden。你生成的 api-key 对吗?也许您的 SHA1 指纹不正确?
我遇到了同样的问题。 检查 应用程序 build.gradle 文件中的 applicationId。对我来说,我在 API 键的 console.developers.google.com 上设置的 applicationId 和包名称不一样。我想他们必须是一样的。修复名称后,它对我有用。希望对你有用。
从开发人员控制台启用 Awareness Api,它将正常工作
这是一个已知错误。当 GoogleApiClient 在 connect()
中遇到网络错误时,它会抛出 SecurityException。
非常烦人,但你没有做错任何事情(只要你使用正确的密钥)
我的情况略有不同。我有 3 个构建变体
- 发展
- 分期
- 生产
所以我有 3 个单独的 google-services.json,每个有 3 个变体。除此之外,我还把下面的代码放在了 development API 键的清单中。
<meta-data
android:name="com.google.android.awareness.API_KEY"
android:value="<API_KEY_OF_DEVELOPMENT_ENVIRONEMT>" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="API_KEY_OF_DEVELOPMENT_ENVIRONEMT" />
当我使用生产环境制作签名的 apk 时,我遇到了同样的错误。应用从 AndroidManifest.xml 而不是 google-services.json 获取 API 密钥。
所以我注释掉了清单文件中的 API 键,然后问题就解决了。