2016-07-10 126 views
2

我正在尝试使用Google的意识api,并将GoogleApiClient的实例注册到意识api,但我收到了一个我找不到任何地方的错误。尝试连接Google Awareness服务时收到错误

我遵循手册,并启用api consule中的意识服务。 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

请注意,在日志的开始有些奇怪的事情,谷歌服务和返回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) 
+0

我正面临同样的问题。生产生成_sometime_崩溃时出现相同的错误。你找到根源了吗? – Nifhel

回答

1

我有同样的问题。 检查应用程序Id在您的应用程序的build.gradle文件。对我来说,我在API密钥上设置在console.developers.google.com上的applicationId和包名称并不相同。我想他们必须是一样的。修复了它为我工作的名称。我希望它能为你工作。

1

你唯一能从栈跟踪中读出的是你的API密钥不被接受。所以你得到一个403禁止的。你是否生成了api-key?也许你的SHA1指纹不是正确的?

+0

是的,正在考虑这一点,但没有什么特别的应用程序的sh1害怕。 – Dus

+0

您使用的是调试还是发布模式? – user3166372

+0

版本和签署 – Dus

-1

从开发者控制台启用Awareness Api,它将正常工作

1

这是一个已知的错误。当GoogleApiClient在connect()中遇到网络错误时,它会引发SecurityException。

非常恼人,但(如你使用了正确的键长)

1

略有不同的场景,我的情况下,你没有做错什么。我有3个构建变量

  • 发展
  • 分期
  • 生产

所以我不得不3个独立的谷歌,services.json每3个变种。随着这一点,我已经把下面的代码放在清单中,并带有开发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取得API密钥,而不是google-services.json。

所以我注释清单文件中的API密钥,然后问题得到解决。

相关问题