Skip to content

Instantly share code, notes, and snippets.

@honza
Created May 11, 2011 22:59
Show Gist options
  • Save honza/967585 to your computer and use it in GitHub Desktop.
Save honza/967585 to your computer and use it in GitHub Desktop.
Google Contacts API OAuth - Django Views
from django.http import HttpResponse, HttpResponseRedirect
from settings import CONSUMER_KEY, CONSUMER_SECRET, SCOPES, URL
import gdata.contacts.client
import gdata
def index(request):
client = gdata.contacts.client.ContactsClient(source='yo')
if 'token' not in request.session:
callback = "%s/callback" % URL
request_token = client.GetOAuthToken(SCOPES, callback, CONSUMER_KEY,
consumer_secret=CONSUMER_SECRET)
request.session['request_token'] = request_token
url = request_token.generate_authorization_url('mydomain.com')
return HttpResponseRedirect(url)
else:
token = request.session['token']
token_secret = request.session['token_secret']
client.auth_token = gdata.gauth.OAuthHmacToken(CONSUMER_KEY,
CONSUMER_SECRET, token, token_secret, gdata.gauth.ACCESS_TOKEN)
feed = client.GetContacts()
html = "<ul>"
for i in feed.entry:
try:
item = i.name.full_name.text
for e in i.email:
item += ' - %s ' % e.address
html += "<li>%s</li>" % item
except:
pass
html += "</ul>"
return HttpResponse(html)
def callback(request):
request_token = request.session['request_token']
uri = "%s%s" % (URL, request.get_full_path())
request_token = gdata.gauth.AuthorizeRequestToken(request_token,
uri)
client = gdata.contacts.client.ContactsClient(source='yo')
access_token = client.GetAccessToken(request_token)
request.session['token'] = access_token.token
request.session['token_secret'] = access_token.token_secret
return HttpResponseRedirect('/')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment