python oauth-2.0 gdata gdata-api

python - ¿Cómo autorizo ​​un cliente gdata sin usar el flujo de trabajo gdata oauth2?



oauth-2.0 gdata-api (3)

Ya tengo un access_token y refresh_token, pero no puedo encontrar una manera de crear un cliente gdata autorizado sin pasar por todo el flujo de trabajo de generación de tokens en gdata.


Prueba esto:

import httplib2 from oauth2client.client import OAuth2Credentials credentials = OAuth2Credentials(''access_token'', client_id, client_secret, ''refresh_token'', ''token_expiry'',''token_uri'',''user_agent'') # the client_id and client_secret are the ones that you receive which registering the App # and the token_uri is the Redirect url you register with Google for handling the oauth redirection # the token_expiry and the user_agent is the one that you receive when exchange the code for access_token http = httplib2.Http() http = credentials.authorize(http) service = build(''analytics'', ''v3'', http=http) # this will give you the service object which you can use for firing API calls


Así que conseguí que esto funcionara finalmente. Así es como lo hice:

client = gdata.contacts.client.ContactsClient() credentials = gdata.gauth.OAuth2Token(client_id = ''client_id'', client_secret = ''client_secret'', scope = ''https://www.google.com/m8/feeds/'', user_agent = auth.user_agent, # This is from the headers sent to google when getting your access token (they don''t return it) access_token = auth.access_token, refresh_token = auth.refresh_token) credentials.authorize(client) contacts = client.get_contacts()


Gdata le permite autenticarse usando la información del usuario, ej. nombre de usuario / contraseña ... aquí hay un snipet de código del archivo gdata python api /gdata-2.0.18/samples/docs/docs_example.py que viene con la API

class DocsSample (object): "" "Un objeto DocsSample demuestra el feed de la Lista de documentos." ""

def init (auto, correo electrónico, contraseña): "" "Constructor para el objeto DocsSample.

Takes an email and password corresponding to a gmail account to demonstrate the functionality of the Document List feed. Args: email: [string] The e-mail address of the account to use for the sample. password: [string] The password corresponding to the account specified by the email parameter. Returns: A DocsSample object used to run the sample demonstrating the functionality of the Document List feed. """ source = ''Document List Python Sample'' self.gd_client = gdata.docs.service.DocsService() self.gd_client.ClientLogin(email, password, source=source) # Setup a spreadsheets service for downloading spreadsheets self.gs_client = gdata.spreadsheet.service.SpreadsheetsService() self.gs_client.ClientLogin(email, password, source=source)

si invoca esto como {python ./docs_example.py --user username --pw password} se saltará la solicitud, pero se lo pedirá si no lo hace. Sin embargo, esto se está depreciando, pero aún funciona en la mayoría de las situaciones fuera de las redes que trabajan directamente con Google, ya que a menudo esto requerirá oauth2. Dicho esto, tiene inconvenientes de seguridad, específicamente alcance y poca protección con contraseña, por lo que está en desuso ... pero eso debería responder a su pregunta un poco mejor ...