2011-09-04 16 views
5

Estoy tratando de obtener la lista de mapas creados por mí en Google Maps y la API de Mapas dice lo siguiente:El uso de GET y POST con cabecera HTTP de autorización en Python


Recuperando una lista de mapas

La API de datos de mapas proporciona un feed que enumera los mapas creados por un usuario en particular; este alimento se conoce como "metafeed". Un típico API metafeed Mapas de datos es una petición GET de la siguiente forma:

Las peticiones de alimentación por defecto todos los mapas asociados al usuario autenticado

GET http://maps.google.com/maps/feeds/maps/default/full 
Authorization: GoogleLogin auth="authorization_token" 

Las solicitudes metafeed estándar todos los mapas asociados con el ID de usuario asociado

GET http://maps.google.com/maps/feeds/maps/userID/full 
Authorization: GoogleLogin auth="authorization_token" 

Tenga en cuenta que ambas solicitudes GET requieren un encabezado HTTP de Autorización, pasando un token AuthSub o GoogleLogin, según el esquema de autenticación que haya implementado. (El token GoogleLogin corresponde al proceso de autenticación ClientLogin.)


no tengo idea de cómo crear solicitud HTTP con cabeceras HTTP de autorización. Ya tengo código para obtener el authorization_token, que es el siguiente:

# coding: utf-8 

import urllib, re, getpass 

# http://code.google.com/intl/pt-BR/apis/maps/documentation/mapsdata/developers_guide_protocol.html#ClientLogin 

username = 'heltonbiker' 
senha = getpass.getpass('Senha do usuário ' + username + ':') 

dic = { 
     'accountType':  'GOOGLE', 
     'Email':   (username + '@gmail.com'), 
     'Passwd':   senha, 
     'service':   'local', 
     'source':   'helton-mapper-1' 
     } 
url = 'https://www.google.com/accounts/ClientLogin?' + urllib.urlencode(dic) 
output = urllib.urlopen(url).read() 
authid = output.strip().split('\n')[-1].split('=')[-1] 

También me dio un vistazo a httplib documentos, pero no entiendo mucho (no soy un programador profesional).

¿Alguna pista?

Respuesta

7

Usando urllib2 hará todo más fácil:

import urllib2 

request = urllib2.Request('http://maps.google.com/maps/feeds/maps/default/full') 
request.add_header('Authorization', 'GoogleLogin auth=%s' % authorization_token) 
urllib2.urlopen(request).read() 

Por cierto, no es la API de datos de Google Maps en desuso? http://googlegeodevelopers.blogspot.com/2010/11/maps-data-api-deprecation-announcement.html

+0

¡Has dado en el clavo! Sabía que habría una forma directa de hacerlo. Ahora, para la desaprobación de Maps Data API, algunos sitios dicen una cosa, otros dicen que otra ... ¡Veamos si funciona! – heltonbiker

+0

Sí, funciona, obtengo una cadena XML con información sobre todos mis mapas, pero o no sé qué hacer con los datos, y también la API está en desuso. Así que seguiré usando regex para obtener los 'MapID's de esta cadena y automatizar la descarga de mapas en formato KML:' 'http://maps.google.com.br/maps/ms?msid=USERID.MAPID&msa=0&output= kml' – heltonbiker

Cuestiones relacionadas