![](/img/trans.png)
[英]GCM Push Notification with PHP suddenly started throwing Unauthorized 401 error
[英]API key for GCM is suddenly invalid? Unauthorized (401) error
我為我的Android應用程序創建了一個用於GCM推送通知的Android API密鑰。從過去兩天開始,GCM服務器在PHP中返回Unauthorized(401)響應。
Android API密鑰是否有任何原因無效/過期? 或者GCM是否棄用了Android API密鑰?
我還沒有得到關於為什么Android API密鑰無效的正確解釋? 他們中的大多數人更喜歡使用服務器密鑰而不是GCM的Android API密鑰,但沒有提到為什么不使用Android API密鑰。
為什么不在GCM中使用Android API Key? Android API密鑰有任何限制嗎? 或者,如果通知消息超過每日限制,GCM服務器是否阻止通知/ GCM服務器使Android API密鑰無效?
更新 :使用的術語是返回服務器密鑰 。
就在最近,現在正在推出Firebase雲消息傳遞令牌 (FCM令牌)。 這在Firebase控制台的Cloud Messaging選項卡中可見。
更新 : GCM文檔中現在有一個明顯的說明:
從2016年9月開始,只能使用“設置”面板的“ 雲消息傳遞”選項卡在Firebase控制台中創建新的服務器密鑰。 可以在Firebase控制台中導入需要創建新服務器密鑰的現有項目,而不會影響其現有配置。
更新 :似乎從GCM遷移到FCM修復了401 Unauthorized Error的問題。
如果您剛剛開始使用GCM ,而不是在Google Developers Console中創建項目,請在Firebase控制台中執行此操作。 創建項目后,只需使用自動生成的服務器密鑰。 以下是查找服務器密鑰的步驟:
對於舊的GCM項目 ,您只需將項目導入Firebase控制台:
出於某種原因,現在只有一個服務器密鑰可用於GCM。 Android Key並不是唯一似乎無效的,所有其他客戶端API密鑰(瀏覽器,iOS,Android)都是。
當涉及Server Key的描述時:
如果應用程序在服務器上運行,請創建並使用服務器密鑰。
使用服務器密鑰是合乎邏輯的,因為您在服務器上使用API密鑰,並且它正在與GCM連接服務器一起使用。
如果將FCM文檔與GCM文檔 (在憑據下)進行比較,則可以看到在GCM中,它僅表示API密鑰,而在FCM中,它已指定服務器密鑰。 那么,FCM是GCM的新版本,可能與它有關嗎? 我不太確定,但我認為你得到了我所說的要點。
更新 :在GCM文檔中,現在指示了服務器密鑰。
默認情況下,在完成配置API項目步驟后,將生成服務器API密鑰(我通過選擇Android應用程序對其進行了測試)。 firebase-cloud-messaging也是如此 。 每當我創建一個新項目時,它只會自動生成一個服務器密鑰。
希望將來能解釋原因。
繼續前進並添加有關如何創建服務器密鑰的步驟。 以防其他人感到困惑,或者新手不確定如何。
--- 開發人員控制台中的更新減少了這里的步驟 ---
那時服務器密鑰應該可用。
更新 :生成API密鑰似乎最近發生了變化。 直到我上面提到的第4步,它才一樣。 但是,在您選擇API密鑰后,它將直接創建API密鑰,而不會詢問它是什么類型的密鑰(服務器,Android,瀏覽器,iOS)。 它只允許您設置一些可見的限制 ,具體取決於您要生成的API密鑰。
更新 :創建沒有限制的API密鑰時,它會顯示一個通知(感嘆號),表明您的API密鑰容易受到攻擊,這就是為什么強烈建議您為API密鑰添加限制 。 有一個帖子有這個問題,並且添加限制能夠解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.