2016-07-22 137 views
1

爲什麼谷歌的GCM (Google Cloud Messaging)服務突然返回401請求發送Android推送通知有什麼原因?調用看起來像這樣GCM(Google Cloud Messaging)突然返回401

curl --header "Authorization: key=<my_android_key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"/topics/my_topic\", \"data\":{\"category\":\"help\", \"title\":\"Test\", \"text\":\"Test\", \"param\":\"\"}}" 

結果是

<HTML> 
<HEAD> 
<TITLE>Unauthorized</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Unauthorized</H1> 
<H2>Error 401</H2> 
</BODY> 
</HTML> 

UPDATE:

谷歌的名字四種可能causes for this error

  • Authorization頭丟失或在HTTP請求無效的語法。
  • 無效的項目號碼作爲密鑰發送
  • 密鑰有效,但禁用了GCM服務。
  • 源自服務器密鑰IP中未列入白名單的服務器的請求。

我檢查了問題here中的API密鑰的有效性,它似乎無效。問題是爲什麼?它曾經工作到目前爲止。哎呀。 : -/

+0

API密鑰已更改/刪除?也可以添加一些顯示請求的代碼。 – COBB

+0

我們不小心刪除了該帳戶並稍後恢復了該帳戶,這是否會使標記無效? :-/ 不確定。 – 0x4a6f4672

+0

也許嘗試爲GCM服務啓用的項目創建新的服務器API密鑰。 – COBB

回答

2

不確定爲什麼發送推送通知使用Android密鑰停止工作,因爲它曾經工作過。我設法通過使用服務器密鑰而不是Android的關鍵這樣的推送通知發送到Android應用:

curl --header "Authorization: key=<my_server_key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"/topics/my_topic\", \"data\":{\"category\":\"help\", \"title\":\"Test\", \"text\":\"Test\", \"param\":\"\"}}" 

顯然,這似乎是正確的方法,現在針對Android: Why Android key (api key) is invalid or that key is deprecated by GCM server?

我發現一個網站,說:「谷歌做出了改變,從對GCM/FCM工作出於安全原因停止的Android按鍵」 https://groups.google.com/forum/#!msg/firebase-talk/4lCPr-UIuY0/ShWZk6z2AAAJ

所以答案似乎是使用「服務器密鑰」發送Android GCM消息(而不是「Android密鑰」)。

1

看起來你沒有使用開發人員控制檯的服務器密鑰爲您的應用程序。

相關問題