2013-05-14 61 views
3

所以我试图通过GCM通过GC发送消息给Chrome扩展。谷歌云消息传递的Chrome错误500

$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}}。 谢谢。

回答

1

500是内部错误的HTTP错误代码。

Google oauthplayground website返回发送谷歌云消息为Chrome这对我来说:

HTTP/1.1 500内部服务器错误 内容长度:52 X-XSS-保护:1;模式=块 X-内容类型选项:nosniff X-谷歌-缓存控制:远程取编码-content- :gzip的 服务器:GSE 原因:内部服务器错误 途经:HTTP/1.1 GWA Cache-control:private,max-age = 0 Date:Wed,15 May 2013 07:01:40 GMT X-frame-options:SAMEORIGIN Content-type:application/json;字符集= UTF-8 到期日:星期三,2013年5月15日7时01分40秒GMT { “错误”:{ “代码”:500, “消息”:空 } }

根据Google's Cloud Message for Chrome docs

发生内部错误。这表示Google服务器端发生了问题(例如,某些后端无法正常工作,或者HTTP帖子中存在错误,例如缺少访问令牌)。

从本质上来说,谷歌方面有些问题。考虑到谷歌I/O将在几个小时内开始,我认为他们目前正在做一些改变。

请尝试在几个小时后再次检查。

0

一个可能的原因是是,如果你用于测试的应用程序在Chrome网上应用店也从未发表过的问题跟踪器。因此,如果您在本地创建了一个应用并将其加载到未打包进行测试的Chrome中 - 它总是会失败,因为GCM不知道谁拥有该应用。将应用发布到应用商店时,请使用在Api Console中使用的相同Google帐户来创建项目和Oauth clientId/client secret等.CGM for Chrome仅适用于这些Google帐户匹配的情况。

GCM验证应用程序的所有者是否与访问令牌的所有者相匹配,以确保应用程序的所有者仅为其发布消息。在网上应用店发布应用会在Google帐户和appID之间建立链接,以便验证它。

现在,一旦您发布了某个版本的应用程序,就可以将Web Store生成的魔术令牌添加到本地应用程序的清单中,并在本地继续修改/重新加载/调试,现在您的应用程序已正确注册为GCM。请参阅我的回答in chromium-apps group了解更多详情。

0

我也得到了同样的错误。我通过打包我的应用程序并上传到Chrome网上商店来解决此问题。然后,我使用新的频道ID,现在可以使用