Как получить доступ к аутентифицированному сервису Google App Engine из (не веб) клиента Python?
У меня есть приложение Google App Engine -http://mylovelyapp.appspot.com/ У него есть страница - mylovelypage
На данный момент страница просто делаетself.response.out.write('OK')
Если я запускаю следующий Python на моем компьютере:
<code>import urllib2 f = urllib2.urlopen("http://mylovelyapp.appspot.com/mylovelypage") s = f.read() print s f.close() </code>
он печатает "ОК"
проблема в том, если я добавлюlogin:required
на эту страницу в приложении yaml
затем распечатывается HTML-код страницы входа в учетные записи Google.
Я "попробовал" нормальный " Подходит аутентификация. например
<code>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) </code>
Но это не имеет значения - я все равно получаю обратно HTML-код страницы входа.
Я пыталсяGoogle ClientLogin Auth API, но я не могу заставить его работать.
<code>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 </code>
Кажется, я могу правильно получить какой-то токен, но пытаюсь использовать его в заголовке, когда я вызываю «mylovelypage». просто верните мне HTML-код страницы входа. :-(
Может кто-нибудь помочь, пожалуйста?
Могу ли я использоватьКлиентская библиотека GData делать такие вещи? От что я прочитал, я думаю, что он должен иметь доступ к приложениям App Engine, но я не добился большего успеха в том, чтобы заставить аутентификацию работать на вещи из App Engine.
Любые указатели на образцы, статьи или даже просто ключевые слова, которыми я должен быть поиск, чтобы начать меня, был бы очень признателен.
Спасибо!