2014-03-06 98 views
14

我收到很多401未授權嘗試連接到Google Cloud Message Server時發生錯誤。如何解決Android GCM 401錯誤?

我們的代碼在我們的測試服務器上工作了一段時間,但在生產過程中它有時會失敗。

API鍵工作正常,推送通知到達(最終),但同時我得到了很多401錯誤。

我驗證過服務器IP地址白名單在控制檯上:

以下Google Troublesooting guide的時候,我得到令人驚訝的結果:

[email protected]:~$ :curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}" 
<HTML> 
<HEAD> 
<TITLE>Unauthorized</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Unauthorized</H1> 
<H2>Error 401</H2> 
</BODY> 
</HTML> 
[email protected]:~$ curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}" 
{"multicast_id":7560936933053964665,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 
[email protected]:~$ curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}" 
<HTML> 
<HEAD> 
<TITLE>Unauthorized</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Unauthorized</H1> 
<H2>Error 401</H2> 
</BODY> 
</HTML> 

有時候,同樣的curl命令的作品,有時它不會沒有任何改變,也不會在控制檯或命令行中...有時它的工作原理,我認爲它的關鍵沒關係(我已經多次檢查了密鑰和允許的IP)。

我已經檢查了所有的stackoverflow問題並測試了所有的建議,但是即使從白名單中刪除所有IP(以允許來自任何IP的請求)行爲仍然是相同的,某些時候它有時會工作「T

一些參考我檢查:

什麼可怎麼回事任何意見將非常感激。

回答

4

許多檢查和沒有找到一個很好的結果後,我們可以給唯一的解決方案是創建一個新項目新的API密鑰(3號之一,因爲我們之前已經做了它),而這第3次有用。

+1

我們遇到了非常類似的問題。你有沒有找到任何其他信息? –

+1

@JakeBraun不,在創建一個新的API密鑰並嘗試了它的工作時間後,我們停止了查找... – pconcepcion

+1

這對我來說也是一樣。奇怪 – valeriocomo

0

可能發生IPv6僅用於連接,而僅允許使用IPv4。 確保你有'任何IP允許'不只是IPv4 0.0.0.0/0。

+0

我們這樣做沒有成功:( – pconcepcion

+0

)要設置'允許任何IP',請將'IPS'字段留空。 – hBrent

2

我已通過在同一項目下創建新的API密鑰解決了我的問題。在此之後

去谷歌開發者控制檯,然後選擇項目憑據 - >創建憑據 - > API密鑰 - >服務器密鑰然後添加在您的GCM服務器代碼託管你的服務器IP地址。

創建Api鍵後,可能需要5分鐘才能工作