所以我试图通过GCM使用php向Chrome扩展程序发送消息。
$data = json_encode(array(
'channelId' => 'channel id here',
'subchannelId' => '0',
'payload'=>'test'
));
$ch = curl_init();
$curlConfig = array(
CURLOPT_URL => "https://www.googleapis.com/gcm_for_chrome/v1/messages",
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $access_token,
'Content-Type: application/json'
)
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
每个请求都会返回{“error”:{“code”:500,“message”:null}}。 感谢。
答案 0 :(得分:1)
500是内部错误的HTTP错误代码。
从Google oauthplayground website发送适用于Chrome的Google云消息会为我返回:
HTTP / 1.1 500内部服务器错误 内容长度:52 X-xss-protection:1;模式=块 X-content-type-options:nosniff X-google-cache-control:远程抓取 -content-encoding:gzip 服务器:GSE 原因:内部服务器错误 通过:HTTP / 1.1 GWA 缓存控制:private,max-age = 0 日期:2013年5月15日星期三07:01:40 GMT X-frame-options:SAMEORIGIN 内容类型:application / json;字符集= UTF-8 到期日:2013年5月15日星期三07:01:40 GMT { “错误”:{ “代码”:500, “message”:null } }
根据Google's Cloud Message for Chrome docs:
发生了内部错误。这表明Google服务器端出现了问题(例如,某些后端无法正常工作或HTTP帖子中的错误,例如缺少访问令牌)。
从根本上说,谷歌的一面有些不对劲。考虑到Google I / O将在几个小时后开始,我认为他们目前正在进行一些更改。
请在几小时后再次检查。
答案 1 :(得分:0)
我今天遇到了同样的问题。
我在Chromium Apps小组上找到了问题跟踪器
https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-apps/UXE_ASCN0gc
答案 2 :(得分:0)
可能的原因之一是您用于测试的应用程序从未在Chrome网上应用店中发布。因此,如果您在本地创建了一个应用程序并将其加载到Chrome解压缩以进行测试 - 例如,它总是会失败,因为GCM不知道谁拥有该应用程序。将应用程序发布到商店时,请使用Api控制台中使用的相同Google帐户创建项目和Oauth clientId / client secret等。只有当这些Google帐户匹配时,才能使用GCM for Chrome。
GCM验证应用的所有者是否与访问令牌的所有者匹配,以确保除了应用的所有者之外没有人为其发布消息。在网上应用店中发布应用程序会在Google帐户和appID之间创建一个链接,以便进行验证。
现在,一旦您发布了某个版本的应用,就可以将Web Store生成的魔术令牌添加到本地应用的清单中,并继续在本地修改/重新加载/调试,现在让您的应用正确注册GCM。有关详细信息,请参阅我的回答in chromium-apps group。
答案 3 :(得分:0)
我也得到了同样的错误。我通过打包我的应用并上传到chrome webstore解决了这个问题。然后我使用新的频道ID,它现在可以使用