Android GCM未经PHP AppEngine授权
我正在使用Appengine并使用一个测试脚本通过GCM发送消息,但它会导致错误 跟着我的剧本Android GCM未经PHP AppEngine授权,android,google-app-engine,google-cloud-messaging,unauthorized,Android,Google App Engine,Google Cloud Messaging,Unauthorized,我正在使用Appengine并使用一个测试脚本通过GCM发送消息,但它会导致错误 跟着我的剧本 $url = 'https://android.googleapis.com/gcm/send'; $serverApiKey = "AIzaSyCKPMazvtdyhqhH7IdIqdHjqUtLNlHnsgA"; // API KEY SERVER $reg = "APA91bEmal_3NpDSV5vuIysMjF8GYxO70_2Nmzx78VCSLmGpX_oX73TqfHczzjP_PgU
$url = 'https://android.googleapis.com/gcm/send';
$serverApiKey = "AIzaSyCKPMazvtdyhqhH7IdIqdHjqUtLNlHnsgA"; // API KEY SERVER
$reg = "APA91bEmal_3NpDSV5vuIysMjF8GYxO70_2Nmzx78VCSLmGpX_oX73TqfHczzjP_PgUmwYcdGz0yPGAajRLb1eP7wfzqtoADMzL1-DoCLYH9kz2dKknwcd7fZFSg_qM6Cgk_gphIRWD2FbcJZ83-ymnF1UhF40j32vYzD7WCDZnq_0-87R5Dbmk"; // registration id
$headers = array(
'Content-Type:application/json',
'Authorization:key=' . $serverApiKey
);
$data = array(
'registration_ids' => array($reg),
'data' => array(
'message' => 'Hello, World!'
));
print (json_encode($data) . "\n\n");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
curl_close($ch);
print ($response);
如果我在本地机器上做同样的测试,它会工作,但在appengine不工作
…似乎不起作用
{"registration_ids":["APA91bEmal_3NpDSV5vuIysMjF8GYxO70_2Nmzx78VCSLmGpX_oX73TqfHczzjP_PgUmwYcdGz0yPGAajRLb1eP7wfzqtoADMzL1-DoCLYH9kz2dKknwcd7fZFSg_qM6Cgk_gphIRWD2FbcJZ83-ymnF1UhF40j32vYzD7WCDZnq_0-87R5Dbmk"],"data":{"message":"Hello, World!"}}
Unauthorized
Error 401
遵循API设置
Key for server applications
API key
AIzaSyCKPMazvtdyhqhH7IdIqdHjqUtLNlHnsgA
IPs
Any IP allowed
Activation date
Mar 12, 2015, 2:40:00 AM
有人能帮我吗?试试使用浏览器键。
服务器密钥从公共ip地址工作。
另外,您应该将您的IP地址列为白名单。我不知道cURL不起作用的原因。我用另一种方法做了,它成功了
$regId = "myid";
$message = "Hello World!";
$registrationIds = array($regId);
$msg = array( 'message' => $message, 'title' => 'notification center', 'tickerText' => $message, 'vibrate' => 1, 'sound' => 1, );
$fields = array(
'registration_ids' => $registrationIds,
'data' => $msg
);
$fields = json_encode($fields);
$arrContextOptions=array(
"http" => array(
"method" => "POST",
"header" =>
'Authorization: key = MyApiKey'. "\r\n" .
'Content-Type: application/json'. "\r\n",
"content" => $fields,
),
"ssl"=>array(
"allow_self_signed"=>true,
"verify_peer"=>false,
),
);
$arrContextOptions = stream_context_create($arrContextOptions);
$result = file_get_contents('https://android.googleapis.com/gcm/send', false, $arrContextOptions);
echo $result;
创建了浏览器API,但出现了相同的问题。。。这里是关键的浏览器API。。。。浏览器应用程序API密钥AIzaSyBDLrlKSotjkf0u46veF_Y8JfOx0nTZIVU引用任何引用允许的激活日期2015年3月12日上午4:58:00