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」と表示されます
誰かがそれについてのアイデアはありますか?
ありがとうございます!