2016-07-10 125 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密鑰,然後問題得到解決。

相關問題