2013-11-28 96 views
0

我嘗試使用GoogleCloudMessaging創建項目以接收來自遠程服務器的推送通知。 對於客戶我使用谷歌教程實施GCM客戶端。 對於服務器我用這個實現在PHP,但之後我開始PHP腳本,我得到了一個錯誤:GoogleCloudMessaging未經授權的錯誤401

未經授權

錯誤401

這裏是我的PHP代碼:

$url = 'https://android.googleapis.com/gcm/send'; 
$serverApiKey = "778688687533"; // sender id (Project Number) 
$reg = "APA91bFFWLYsX8TK_XiGQJeUkHb_7FJZwZBSdnNEdxzQEQ-ijpmVvwBPxaz3wQPmWy_K6YAIYt1x_3IBDzbyALxcpmjL8mKEX7g5CV9QpXod3oFp4Hm5HqsY8snoQdua3l0NcMoHm0WE4oTbNUYcbAOE7zjJEV_p9Q"; // registration id 

$headers = array(
'Content-Type:application/json', 
'Authorization:key=' . $serverApiKey 
); 

$data = array(
'registration_ids' => array($reg), 
'data' => array(
'message' => 'Hello, World!' 
)); 

print (json_encode($data) . "\n\n"); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
if ($headers) 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 

$response = curl_exec($ch); 

curl_close($ch); 

print ($response); 

enter image description hereenter image description here

+0

你必須使用服務器密鑰! –

+0

我必須使用服務器密鑰而不是項目編號嗎? 我可以在哪裏獲得/創建服務器密鑰?谷歌已改變控制檯的設計,我找不到服務器密鑰。謝謝! – Denis

+1

我解決了這個問題。正如Sunil Mishra寫的,我不得不在我的php腳本中使用服務器密鑰而不是發件人ID(項目編號)。 – Denis

回答

0

要創建新的服務器密鑰,請執行以下步驟:

  • 轉到https://cloud.google.com/console/project
  • 單擊項目
  • 轉到的API &權威性在左側面板中的子菜單
  • 選擇憑據左側面板
  • 公共API訪問,點擊「 創建新密鑰
  • 選擇'服務器'
  • 在下一個對話框中,指定列入白名單的IP(如果有)。將其留空,請求將來自任何IP
  • 點擊創建
  • 你會發現新的服務器密鑰「公共API訪問

此鍵用於在服務器端腳本中的發送消息下創建的。

相關問題