我总是得到401错误。如果我正在使用我的本地服务器,任何人都可以让我确切地知道HTTP推荐人应该是什么。即目前我正在使用:
http://localhost/GCM/index.php
并使用它生成API访问密钥。
这是我的GCM请求的PHP代码。
$key='mykey';
$headers=array('Contenttype:application/json','Authorization:key='.$key);
$url = 'https://android.googleapis.com/gcm/send';
$ch = curl_init();
$curlConfig = array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => json_encode(array('field1' => 'some date','field2' => 'some other data',)),
CURLOPT_HTTPHEADER => $headers,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);
if($result==FALSE){
echo curl_error($ch);
echo curl_getinfo($ch);
}else{
echo $result;
}
答案 0 :(得分:8)
我与同样的问题作斗争。原来它与IPv6有关!我使用 0.0.0.0/0 作为允许的主机IP创建了http://developer.android.com/google/gcm/gs.html中描述的服务器密钥,但这与IPv6不匹配。所以我添加了另一个允许的主机线IP为 0 :: 0/0 并且有效(稍后更新缓存配置?)。
将IP字段留空可以使用任何IP并且更容易。
答案 1 :(得分:1)
我可以看到几个错误:
Contenttype:application/json
应为Content-Type: application/json
。CURLOPT_SSL_VERIFYPEER => false
和CURLOPT_SSL_VERIFYHOST => false
。您可以找到许多有效的PHP GCM示例(例如 - here)。
答案 2 :(得分:1)
这是因为您没有启用IP来访问GCM,要知道您在GOOGLE中的网络IP类型“我的IP ”,之后创建 SERVER KEY 你使用Google_Api_Console并在服务器密钥生成中使用ip,在本地服务器的php文件中使用 SERVER KEY ,第一个图像显示在谷歌控制台中的密钥列表中选择,选择服务器密钥和第二个图像显示,将IP放入您需要启用的内容。