GoogleCloudMessaging未经授权的错误401

时间:2013-11-28 13:22:38

标签: php android google-cloud-messaging unauthorized

我尝试使用GoogleCloudMessaging创建项目,以便从我的远程服务器接收推送通知。 对于客户端我使用谷歌教程实施GCM客户端。 对于服务器我在php上使用这个实现,但是在我启动php脚本之后,我收到了一个错误:

未经授权

错误401

这是我的php代码:

$url = 'https://android.googleapis.com/gcm/send';
$serverApiKey = "778688687533"; // sender id (Project Number)
$reg = "APA91bFFWLYsX8TK_XiGQJeUkHb_7FJZwZBSdnNEdxzQEQ-ijpmVvwBPxaz3wQPmWy_K6YAIYt1x_3IBDzbyALxcpmjL8mKEX7g5CV9QpXod3oFp4Hm5HqsY8snoQdua3l0NcMoHm0WE4oTbNUYcbAOE7zjJEV_p9Q"; // 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);
if ($headers)
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);

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

要创建新服务器密钥,请执行以下步骤

  • 转到https://cloud.google.com/console/project
  • 点击您的项目
  • 转到 API&左侧面板上的身份验证
  • 在左侧面板的子菜单中选择凭据
  • 公开API访问下,点击“创建新密钥
  • 选择“服务器
  • 在下一个对话框中,指定列入白名单的IP(如果有)。留空,请求将来自任何IP
  • 点击创建
  • 您会发现新的服务器密钥是在“公共API访问
  • 下创建的

此密钥用于在服务器端的脚本中发送消息。