簡體   English   中英

Google Awareness API,無效的API密鑰,崩潰

[英]Google Awareness API, Invalid API key, Crash

這是我第一次嘗試創建一個Android應用程序。 在嘗試使用Google提供的Awareness API時,我在logcat中收到SecurityException,錯誤如下:

“package = com.example.android.project的API密鑰無效。收到的狀態代碼= 12”。

意思是,mGoogleApiClient.connect()會導致應用每次都崩潰。 反正知道狀態代碼是什么意思嗎?

[BaseServerTask]Server task (PingTask) got error statusCode=403.
    com.android.volley.AuthFailureError
    at com.android.volley.toolbox.BasicNetwork.performRequest(:com.google.android.gms:32)
    at lbf.performRequest(:com.google.android.gms:3)
    at com.android.volley.NetworkDispatcher.run(:com.google.android.gms:11)
    07-01 15:54:24.303 4839-19074/? E/ctxmgr: [ContextManager3PCredentialsVerifier]Failed ping response: network status=12
    07-01 15:54:24.304 4839-19081/? E/AbstractServiceBroker: Getting service failed

java.lang.SecurityException: Invalid API Key for package = com.example.android.project. Status code received = 12
    at cpm.a(:com.google.android.gms:19)
    at cpp.a(:com.google.android.gms:46)
    at ktv.a(:com.google.android.gms:41)
    at kwh.onTransact(:com.google.android.gms:8)
    at android.os.Binder.transact(Binder.java:507)
    at bxh.onTransact(:com.google.android.gms:2)
    at android.os.Binder.execTransact(Binder.java:573)
    07-01 15:54:24.520 19508-19508/com.example.android.project E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.android.project, PID: 19508

java.lang.SecurityException: Invalid API Key for package = com.example.android.project. Status code received = 12
    at android.os.Parcel.readException(Parcel.java:1693)
    at android.os.Parcel.readException(Parcel.java:1646)
    at com.google.android.gms.common.internal.zzax.zza(Unknown Source)
    at com.google.android.gms.common.internal.zzd.zza(Unknown Source)
    at com.google.android.gms.internal.zzbcj.zzpV(Unknown Source)
    at com.google.android.gms.internal.zzbcn.run(Unknown Source)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at com.google.android.gms.internal.zzbgx.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:762)

這個錯誤沒有意義,因為在Developer Console中我設置API密鑰沒有任何限制,希望它能解決這個問題,即沒有鎖定到任何項目,它仍然無法正常工作。 並且在控制台中啟用了API。

我嘗試過其他主題的建議: 無法連接到Google API CLient? 嘗試連接Google Awareness服務時收到錯誤等。但問題仍然存在。

public class MainActivity extends AppCompatActivity implements 
GoogleApiClient.OnConnectionFailedListener, 
GoogleApiClient.ConnectionCallbacks {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Connect to Awareness API
        mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Awareness.API)
            .build();
        mGoogleApiClient.connect(); // the app crashes here

    }
}

最后我的AndroidManifest:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.android.project">

<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="@drawable/appicon"
    android:label="@string/app_name"
    android:roundIcon="@drawable/appicon"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <meta-data
        android:name="com.google.awareness.API_KEY"
        android:value="MY_API_KEY"/>
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="MY_API_KEY"/>
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

</manifest>

我不知道該怎么辦,有人有什么建議嗎?

我正在三星Galaxy S6,Android版本:7.0上進行測試

將其打印到控制台:( (new Status(403)).getStatusMessage() 它應該顯示錯誤的狀態消息。 在這里閱讀更多

您的API_KEY似乎在AndroidManifest中設置不正確:請注意正確的包名稱是

“com.google.android.awareness.API_KEY”

並不是

“com.google.awareness.API_KEY”

因為你似乎擁有它。 請參閱https://developers.google.com/awareness/android-api/get-started

如果有人面臨着正確艙單申報類似的問題,因為在谷歌中提到這里可以嘗試使用生成密鑰庫調試測試目的,並發布密鑰庫替換相同,而要生產的谷歌開發者控制台的API密鑰。

如何生成API密鑰? 在這里查看谷歌的單詞

希望它將來有助於某人。

在我的情況下,通過在manifests.xml文件中添加以下元數據標記來解決問題

<meta-data
            android:name="com.google.android.awareness.API_KEY"
            android:value="API_KEY"/>

並且必須存在以下標記

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="API_KEY" />

如果您在Google Play控制台的預啟動報告中收到此錯誤,請在預啟動設置中選中“選擇停用生成啟動前報告,其中X已重新簽名”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM