#include_next
这是我的要求, 我试图从我的cmd发送这个, 使用我在谷歌控制台创建的api密钥,我的端点为registration_ids。
但这就是我得到的:
CURL --header "Authorization: key=XXXXXXXXX" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"XXXXXXXX\"]}"
任何想法? thx:)
答案 0 :(得分:0)
导航至https://console.developers.google.com/apis/credentials?project=<project-name>
然后选择您创建的服务器密钥。在页面底部,您可以添加列入白名单的IP /范围。
答案 1 :(得分:0)
您获得401 Unauthorized
因为GCM仅接受来自基于HTTPS的主机的请求,而本地控制台不是这样。
验证这一点的最简单方法(如果您还没有基于HTTPS的网站)是:
第1阶段 - 获取启用HTTPS的网站
现在,您网站的流量将通过CloudFlare重定向。 从您的客户到CloudFlare的流量将被加密,从CloudFlare到您的服务器的流量不会被激活。
虽然它不是100%安全,但它可以保护最常见的攻击媒介 - 恶意互联网提供商等,并且只需很少的努力就可以获得免费的服务工作者就绪网站。
如果您需要自己的证书,可以使用Let's Encrypt
第2阶段 - 将GCM发件人放在您的HTTPS服务器上
我在PHP中有一些示例代码:
<?
function sendPushNotification($data, $ids)
{
echo("<br><br><b>Sending notifications...</b>");
// Insert real GCM API key from the Google APIs Console
$apiKey = 'AIza...';
// Set POST request body
$post = array(
'registration_ids' => $ids,
'data' => $data,
);
// Set CURL request headers
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Initialize curl handle
$ch = curl_init();
// Set URL to GCM push endpoint
curl_setopt($ch, CURLOPT_URL, 'https://gcm-http.googleapis.com/gcm/send');
// Set request method to POST
curl_setopt($ch, CURLOPT_POST, true);
// Set custom request headers
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get the response back as string instead of printing it
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set JSON post data
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
// Actually send the request
$result = curl_exec($ch);
// Handle errors
if (curl_errno($ch))
{
echo 'GCM error: ' . curl_error($ch);
}
// Close curl handle
curl_close($ch);
// Debug GCM response
echo $result;
}
$data = array('message' => 'JAAAREEEEK!');
// Please note that currently push payload is not supported. However if you're reading this answer from the future it might work
// The recipient registration tokens for this notification
// https://developer.android.com/google/gcm/
$ids = ['registrationid1','registrationid2']
// Send push notification via Google Cloud Messaging
sendPushNotification($data, $ids);
我有完全相同的问题,这个解决方案解决了它。如果您还有其他问题,请给我一个大喊。