Tengo una aplicación de Google App Engine - http://mylovelyapp.appspot.com/ Tiene una página - mylovelypage¿Cómo accedes a un servicio autenticado de Google App Engine desde un cliente python (no web)?
Por el momento, la página sólo hace self.response.out.write('OK')
Si funciono el siguiente Python en mi computadora:
import urllib2
f = urllib2.urlopen("http://mylovelyapp.appspot.com/mylovelypage")
s = f.read()
print s
f.close()
imprime "OK"
el problema es si añado login:required
a esta página en yaml de la aplicación
luego imprime el código HTML de la página de inicio de sesión de Cuentas de Google
He intentado con enfoques de autenticación "normales". p.ej.
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)
Pero no hace la diferencia - Aún consigo el HTML de la página de inicio de sesión.
He intentado Google's ClientLogin auth API, pero no puedo hacerlo funcionar.
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
que parecen ser capaces de obtener alguna muestra correctamente, pero los intentos de utilizarlo en la cabecera cuando llamo 'mylovelypage' todavía me acaba de regresar HTML de la página de inicio de sesión. :-(
puede ayudar a nadie, por favor?
podría utilizar el GData client library hacer este tipo de cosas? De lo que he leído, creo que debería ser capaz de acceder a las aplicaciones de App Engine, pero no he tenido más éxito en conseguir que la autenticación funcione para App Engine. O bien
Cualquier puntero a muestras, artículos o incluso solo palabras clave debería ser en la búsqueda para comenzar, sería mucho apreciado.
¡Gracias!
Llegué a obtener un authtoken, pero no había intentado usarlo para obtener una cookie, ¡muchas gracias por el puntero! – dalelane
He incluido la fuente en una nueva 'respuesta' a continuación - gracias de nuevo – dalelane
Los enlaces están rotos ("_GetAuthToken", "_GetAuhtcookie", etc.) – dfrankow