2013-05-14 63 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,現在可以使用