2012-07-09 136 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", 
);