GCM python服务器端实现:错误= MissingRegistration

时间:2013-01-24 07:12:55

标签: python google-app-engine google-cloud-messaging

我正在服务器端实施GCM推送服务,并且在GCM =>的响应中面临错误错误= MissingRegistration

有谁知道为什么会出现这种错误?

示例代码为:

    def make_request(self, data, is_json=True):

        headers = {
            'Authorization': 'key=%s' % self.api_key,
        }
        # Default Content-Type is defaulted to application/x-www-form-urlencoded;charset=UTF-8
        if is_json:
            headers['Content-Type'] = 'application/json'

        if not is_json:
            data = urllib.urlencode(data)
        req = urllib2.Request(GCM_URL, data, headers)

        try:
            response = urllib2.urlopen(req).read()
        except urllib2.HTTPError as e:
            if e.code == 400:
                raise GCMMalformedJsonException("The request could not be parsed as JSON")
            elif e.code == 401:
                raise GCMAuthenticationException("There was an error authenticating the sender account")
        except urllib2.URLError as e:
            raise GCMConnectionException("There was an internal error in the GCM server while trying to process the request")

        if is_json:
            response = json.loads(response)
        return response

if __name__ == '__main__':
data = {
    'param1': '1',
    'param2': '2'
}
_gcm = GCM('AIzaSyC0lft1_11RGk2aMyt6hoNolC3in5rN50Y')
res = _gcm.construct_payload(
    registration_ids=['APA91bF9MFLWBhZ7y4F87z0D8enceLxOD1GLl92cQSF9lp5Z-VlhxX'], data=data, collapse_key='foo',
    delay_while_idle=True, time_to_live=3600, is_json=True
)
payload = json.loads(res)

result = _gcm.make_request(payload, False)

1 个答案:

答案 0 :(得分:3)

问题已解决此代码有效

 def make_request(self):
            json_data = {"collapse_key" : "msg", 
                         "data" : {
                                   "data": "xyz",
                       }, 
                    "registration_ids": ['APA91bGi13Rg2l_*******beNOGxxP25o0hmtpg'],
            }


            url = 'https://android.googleapis.com/gcm/send'
            myKey = "AIza********N50Y" 
            data = json.dumps(json_data)
            headers = {'Content-Type': 'application/json', 'Authorization': 'key=%s' % myKey}
            req = urllib2.Request(url, data, headers)
            f = urllib2.urlopen(req)
            response = json.loads(f.read())


            self.response.out.write(json.dumps(response,sort_keys=True, indent=2) )