2013-11-28 89 views
0

我尝试使用GoogleCloudMessaging创建项目以接收来自远程服务器的推送通知。 对于客户我使用谷歌教程实施GCM客户端。 对于服务器我用这个实现在PHP,但之后我开始PHP脚本,我得到了一个错误:GoogleCloudMessaging未经授权的错误401

未经授权

错误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 hereenter image description here

+0

你必须使用服务器密钥! –

+0

我必须使用服务器密钥而不是项目编号吗? 我可以在哪里获得/创建服务器密钥?谷歌已改变控制台的设计,我找不到服务器密钥。谢谢! – Denis

+1

我解决了这个问题。正如Sunil Mishra写的,我不得不在我的php脚本中使用服务器密钥而不是发件人ID(项目编号)。 – Denis

回答

0

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

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

此键用于在服务器端脚本中的发送消息下创建的。

相关问题