У меня есть приложение Google App Engine - http://mylovelyapp.appspot.com/ У него есть страница - mylovelypage
На данный момент страница просто self.response.out.write('OK')
Если я запустил на своем компьютере следующий Python:
import urllib2
f = urllib2.urlopen("http://mylovelyapp.appspot.com/mylovelypage")
s = f.read()
print s
f.close()
он печатает "ОК"
проблема в том, что если я добавлю login:required
на эту страницу в yaml приложения
затем распечатывается HTML-код страницы входа в учетную запись Google.
Я пробовал "нормальные" подходы к аутентификации. например
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(None,
uri='http://mylovelyapp.appspot.com/mylovelypage',
user='[email protected]',
passwd='billybobspasswd')
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
Но это не имеет значения - я все равно получаю HTML-код страницы входа.
Я пробовал API аутентификации ClientLogin Google, но не могу получить это работать.
h = httplib2.Http()
auth_uri = 'https://www.google.com/accounts/ClientLogin'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
myrequest = "Email=%s&Passwd=%s&service=ah&source=DALELANE-0.0" % ("[email protected]", "billybobspassword")
response, content = h.request(auth_uri, 'POST', body=myrequest, headers=headers)
if response['status'] == '200':
authtok = re.search('Auth=(\S*)', content).group(1)
headers = {}
headers['Authorization'] = 'GoogleLogin auth=%s' % authtok.strip()
headers['Content-Length'] = '0'
response, content = h.request("http://mylovelyapp.appspot.com/mylovelypage",
'POST',
body="",
headers=headers)
while response['status'] == "302":
response, content = h.request(response['location'], 'POST', body="", headers=headers)
print content
Мне кажется, что я могу правильно получить какой-то токен, но попытки использовать его в заголовке, когда я вызываю mylovelypage, все равно просто возвращают мне HTML-код страницы входа. :-(
Кто-нибудь может помочь, пожалуйста?
Могу ли я использовать для этого клиентскую библиотеку GData? Из того, что я прочитал, я думаю, что он должен иметь доступ к приложениям App Engine, но мне также не удалось добиться, чтобы аутентификация работала для материалов App Engine и там.
Любые указатели на образцы, статьи или даже просто ключевые слова, которые я должен искать, чтобы начать работу, были бы очень признательны.
Спасибо!