2012-07-09 119 views
1

我想發送消息到Android手機,但不斷獲得響應代碼401與文本:未經授權。我還會繼續閱讀關於使用什麼鍵的不同故事,我知道3個鍵:項目ID(號碼),服務器應用程序的鍵和瀏覽器應用程序的鍵。所以我嘗試了所有3個,所有結果都一樣。GCM發送與捲曲(PHP)

我的代碼:

$headers = array("Content-Type" => "application/json", "Authorization" => "key=" . "mykey"); 
    $data = array(
     'data' => $messageText, 
     'registration_ids' => array($deviceRegistrationId) 
    ); 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send"); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
    error_log(json_encode($data)); 
    $response = curl_exec($ch); 
    curl_close($ch); 
    error_log($response); 
+0

我有同樣的問題。我已經使用了正確的標題數組(「Content-Type:」。「application/json」,「Authorization:」。「key =」。「mykey」);並嘗試所有服務器和瀏覽器密鑰 – Anand 2012-07-13 09:16:07

回答

4

我改變了頭:

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

和它的作品。 mykey是瀏覽器應用程序的關鍵。

+0

您是否必須將'referral'主機名放入api訪問頁面。我這樣做,但仍然得到401 – Anand 2012-07-13 09:24:27

+0

我讓它允許來自所有IP的呼叫。首先測試它。 – Klaasvaak 2012-07-14 08:59:53

0

你可以做你的頭像這樣只是爲了更容易一點閱讀並消除串聯:

$headers = array(
    "Authorization:key=mykey", 
    "Content-Type:application/json", 
);