2012-01-16 3 views
0

私はデバイスにメッセージを送信するために、アプリケーションサーバーのサイドコードを書き込むためにpythonを使用しようとしました。私は正常に認証トークンを得ることができると思うが、私はそれをメッセージを送信するために使用すると、常に"HTTPエラー401:無許可"を示しています。私のコードはここにある:registrationId C2DMは常にPythonコードの "Unauthorized"を示します

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() 

は、私はJavaコードのテストを使用している、また、正確であるとそれが動作するか検証します。しかし、私はそれをPythonに変換すると、常に「Unauthorized」と表示されます

誰かがそれについてのアイデアはありますか?

ありがとうございます!

答えて

0

あなたはGoogleLoginを間違って入力しました。GoolgeLoginと書いてあります。

関連する問題