How Do I Authorize A Gdata Client Without Using The Gdata Oauth2 Workflow?
Solution 1:
So I got this working finally. Here's how I did it:
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 isfrom 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()
Solution 2:
Try this:
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 callsSolution 3:
Gdata allows you to authenticate using user info, ex. username/password... here is a code snipet from the gdata python api /gdata-2.0.18/samples/docs/docs_example.py file that comes with the api
class DocsSample(object): """A DocsSample object demonstrates the Document List feed."""
def init(self, email, password): """Constructor for the DocsSample object.
Takes an email and password correspondingto 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 correspondingto 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)
if you invoke this as {python ./docs_example.py --user username --pw password} it will skip asking you for it, but it will ask you for it if you don't. However this is being depreciated but still works in most situations outside networks that directly work with Google as this often times will now require oauth2. This being said, it does have security drawbacks, specifically scope, and poor password protection, which is why it is being deprecated...but that should answer your question a little better...
Post a Comment for "How Do I Authorize A Gdata Client Without Using The Gdata Oauth2 Workflow?"