C2DM всегда указывает на неавторизованный код для Python

Я попытался использовать python для написания кода на стороне сервера приложений для отправки сообщения на устройство. Я думаю, что могу успешно получить токен авторизации, но когда я использую его для отправки сообщения, он всегда показывает "Ошибка HTTP 401: неавторизовано". Мой код здесь:

import urllib, urllib2

class ClientLoginTokenFactory:
_token = None

def __init__(self):
    self.url = 'https://www.google.com/accounts/ClientLogin'
    self.accountType = 'HOSTED_OR_GOOOGLE'
    self.email = '[email protected]'
    self.pwd = 'xxxxx'
    self.service = 'ac2dm'
    self.source = 'com.lei.c2dmtest'

def getToken(self):
    if self._token is None:
        values = {'accountType':self.accountType,'Email':self.email,'Passwd':self.pwd,'source':self.source,'service':self.service}
        data = urllib.urlencode(values)
        request = urllib2.Request(self.url,data)
        response =  urllib2.urlopen(request)
        responseAsString = response.read()
        #print responseAsString
        responseAsList = responseAsString.split('\n')
        self._token = responseAsList[2].split('=')[1]
        print self._token

    return self._token

class C2DM:
def __init__(self):
    self.url = 'https://android.apis.google.com/c2dm/send'
    self.clientAuth = None
    self.registrationId = None  
    self.collapseKey = None
    self.data = {}

def sendMessage(self):
    if self.registrationId == None or self.collapseKey == None:
        return False
    clientAuthFactory = ClientLoginTokenFactory()
    self.clientAuth = clientAuthFactory.getToken()
    print self.clientAuth
    values = {'registration_id': self.registrationId, 'collapse_key': self.collapseKey, 'data.msg': 'Hello!!!'}
    #print values
    headers = {'Authorization': 'GoolgeLogin auth=' + self.clientAuth}
    #print headers
    data = urllib.urlencode(values)
    request = urllib2.Request(self.url, data, headers)

    try:
        response = urllib2.urlopen(request)
        responseAsString = response.read()
        return "AAA"
        return responseAsString
    except urllib2.HTTPError, e:
        print 'HTTPError ' + str(e)

sender = C2DM()
sender.registrationId = 'APA91bGZaTpEgJ9a4tOgFTisedsJCOBFvsdwSkKqfzY97QyOiDlzvlZJv6cP1xDENw6DJM3sYTLslGGke0yAMTH9Ep0eeDmfVLUuM2bkFfwKWGyLG4HQDHR1zxw5TN1hoagi5FLWXYKmEQAvX6Qw-rIiwg03UBrvXA'
sender.collapseKey = 3
response = sender.sendMessage()

registrationId также правильный, который я использую для проверки кода Java и доказываю, что он работает. Но когда я конвертирую его в python, он всегда указывает «Неавторизованный».

У кого-нибудь есть идеи по этому поводу?

Спасибо!


person LuciferTian2010    schedule 16.01.2012    source источник


Ответы (1)


Вы опечатались GoogleLogin, вы написали GoolgeLogin.

person hectorct    schedule 28.04.2012