我正在服务器端实施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)
答案 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) )