繁体   English   中英

在PHP中发送请求Google Cloud Messaging时出错

[英]Error in sending request Google Cloud Messaging in PHP

我正在尝试使用Google Clouding Messaging API与Android App集成。 对于后端,我正在使用Laravel 5.2。 我在Google API中生成了3个api密钥。 这些是服务器API密钥,Android API密钥和浏览器API密钥。 我正在参考本教程

这是我从服务器到GCM服务器的推送请求:

private function sendNotification($registatoin_ids,$message)
{
  $url = 'https://android.googleapis.com/gcm/send';

  $fields = array(
      'registration_ids' => $registatoin_ids,
      'data' => $message,
  );

  $headers = array(
      'Authorization: key='.GOOGLE_API_KEY,
      'Content-Type: application/json'
  );

  // Open connection
  $ch = curl_init();

  // Set the url, number of POST vars, POST data
  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  // Disabling SSL Certificate support temporarly
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

  // Execute post
  $result = curl_exec($ch);
  if ($result === FALSE)
  {
      die('Curl failed: ' . curl_error($ch));
  }

  // Close connection
  curl_close($ch);
  echo $result;
}

function register(Request $request)
{
  $name            = $request->name;
  $email           = $request->email;
  $gcm_regid       = $request->reg_ids;
  $registatoin_ids = array($gcm_regid);
  $message         = array("product" => "shirt");
  $result          = $this->sendNotification($registatoin_ids,$message);
  echo $result;
}

我叫寄存器功能。 emailnamereg_ids是模拟值。 我只是分别传递了myemailmyname和random string。 寄存器功能是控制器的动作。 对于GOOGLE_API_KEY ,我传递了服务器api密钥。 但是当我请求时,它给了我以下错误。

{"multicast_id":5065519232839143946,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

我的推送请求正确吗? 我可以将任何唯一值传递给reg_ids 此外,我的GOOGLE_API_KEY应该是Android,服务器还是浏览器密钥?

您收到的错误是401 HTTP状态代码 ,这意味着用于发送消息的发件人帐户无法通过身份验证。 以下是可能的原因:

  • 授权标头丢失或HTTP请求中的语法无效。

  • 无效的项目编号作为密钥发送。

  • 密钥有效,但禁用了GCM服务。

  • 请求源自未在服务器密钥IP中列入白名单的服务器。

  • API密钥无效。

检查您在Authentication标头中发送的令牌是否是与您的项目关联的正确API密钥。 有关详细信息,请参见检查API密钥的有效性

另请尝试检查此相关的SO问题1796919111242743,以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM