用curl发送GCM(php)

时间:2012-07-09 13:37:06

标签: php android curl google-cloud-messaging

我正在尝试向Android手机发送消息,但不断收到带有文字的响应代码401:未经授权。此外,我一直在阅读关于使用什么密钥的不同故事,我知道3个密钥:项目ID(编号),服务器应用程序密钥和浏览器应用程序密钥。所以我尝试了所有3个,结果相同。

我的代码:

$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);

2 个答案:

答案 0 :(得分:4)

我将标题更改为:

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

它有效。 mykey是浏览器应用的关键。

答案 1 :(得分:0)

你可以像这样做你的标题只是为了让它更容易阅读并消除串联:

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