我正在尝试向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);
答案 0 :(得分:4)
我将标题更改为:
$headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" . "mykey");
它有效。 mykey是浏览器应用的关键。
答案 1 :(得分:0)
你可以像这样做你的标题只是为了让它更容易阅读并消除串联:
$headers = array(
"Authorization:key=mykey",
"Content-Type:application/json",
);