diff --git a/.hgignore b/.hgignore
index 274be82..3a3f338 100644
--- a/.hgignore
+++ b/.hgignore
@@ -7,3 +7,4 @@
 samples/cmdline/*.dat
 htmlcov/*
 .coverage
+database.sqlite3
diff --git a/samples/django_sample/__init__.py b/samples/django_sample/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/samples/django_sample/__init__.py
diff --git a/samples/django_sample/buzz/__init__.py b/samples/django_sample/buzz/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/samples/django_sample/buzz/__init__.py
diff --git a/samples/django_sample/buzz/models.py b/samples/django_sample/buzz/models.py
new file mode 100644
index 0000000..91cdcce
--- /dev/null
+++ b/samples/django_sample/buzz/models.py
@@ -0,0 +1,62 @@
+import pickle
+import base64
+
+import apiclient.oauth
+from django.contrib import admin
+from django.contrib.auth.models import User
+from django.db import models
+
+# Create your models here.
+
+class OAuthCredentialsField(models.Field):
+
+  __metaclass__ = models.SubfieldBase
+
+  def db_type(self):
+    return 'VARCHAR'
+
+  def to_python(self, value):
+    if value is None:
+      return None
+    if isinstance(value, apiclient.oauth.Credentials):
+      return value
+    return pickle.loads(base64.b64decode(value))
+
+  def get_db_prep_value(self, value):
+    return base64.b64encode(pickle.dumps(value))
+
+class FlowThreeLeggedField(models.Field):
+
+  __metaclass__ = models.SubfieldBase
+
+  def db_type(self):
+    return 'VARCHAR'
+
+  def to_python(self, value):
+    print "In to_python", value
+    if value is None:
+      return None
+    if isinstance(value, apiclient.oauth.FlowThreeLegged):
+      return value
+    return pickle.loads(base64.b64decode(value))
+
+  def get_db_prep_value(self, value):
+    return base64.b64encode(pickle.dumps(value))
+
+# The Flow could also be stored in memcache since it is short lived.
+class Flow(models.Model):
+  id = models.ForeignKey(User, primary_key=True)
+  flow = FlowThreeLeggedField()
+
+class Credential(models.Model):
+  id = models.ForeignKey(User, primary_key=True)
+  credential = OAuthCredentialsField()
+
+class CredentialAdmin(admin.ModelAdmin):
+    pass
+
+class FlowAdmin(admin.ModelAdmin):
+    pass
+
+admin.site.register(Credential, CredentialAdmin)
+admin.site.register(Flow, FlowAdmin)
diff --git a/samples/django_sample/buzz/tests.py b/samples/django_sample/buzz/tests.py
new file mode 100644
index 0000000..2247054
--- /dev/null
+++ b/samples/django_sample/buzz/tests.py
@@ -0,0 +1,23 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+    def test_basic_addition(self):
+        """
+        Tests that 1 + 1 always equals 2.
+        """
+        self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
diff --git a/samples/django_sample/buzz/views.py b/samples/django_sample/buzz/views.py
new file mode 100644
index 0000000..aeb0ca2
--- /dev/null
+++ b/samples/django_sample/buzz/views.py
@@ -0,0 +1,62 @@
+import os
+import logging
+import httplib2
+
+from django.http import HttpResponse
+from django.core.urlresolvers import reverse
+from django.contrib.auth.decorators import login_required
+from django_sample.buzz.models import Credential, Flow
+from apiclient.discovery import build
+from apiclient.oauth import FlowThreeLegged
+from django.http import HttpResponseRedirect
+from django.shortcuts import render_to_response
+
+print os.environ
+STEP2_URI = 'http://localhost:8000/auth_return'
+
+@login_required
+def index(request):
+  try:
+    c = Credential.objects.get(id=request.user)
+    http = httplib2.Http()
+    http = c.credential.authorize(http)
+    p = build("buzz", "v1", http=http)
+    activities = p.activities()
+    activitylist = activities.list(scope='@consumption',
+                                   userId='@me').execute()
+    logging.info(activitylist)
+
+    return render_to_response('buzz/welcome.html', {
+                'activitylist': activitylist,
+                })
+
+  except Credential.DoesNotExist:
+    p = build("buzz", "v1")
+    flow = FlowThreeLegged(p.auth_discovery(),
+                   consumer_key='anonymous',
+                   consumer_secret='anonymous',
+                   user_agent='google-api-client-python-buzz-django/1.0',
+                   domain='anonymous',
+                   scope='https://www.googleapis.com/auth/buzz',
+                   xoauth_displayname='Django Example Web App')
+
+    authorize_url = flow.step1_get_authorize_url(STEP2_URI)
+    f = Flow(id=request.user, flow=flow)
+    f.save()
+    return HttpResponseRedirect(authorize_url)
+
+@login_required
+def auth_return(request):
+    try:
+      f = Flow.objects.get(id=request.user)
+      print f
+      print f.flow
+      print dir(f.flow)
+      print type(f.flow)
+      credential = f.flow.step2_exchange(request.REQUEST)
+      c = Credential(id=request.user, credential=credential)
+      c.save()
+      f.delete()
+      return HttpResponseRedirect("/")
+    except Flow.DoesNotExist:
+      pass
diff --git a/samples/django_sample/manage.py b/samples/django_sample/manage.py
new file mode 100755
index 0000000..bcdd55e
--- /dev/null
+++ b/samples/django_sample/manage.py
@@ -0,0 +1,11 @@
+#!/usr/bin/python
+from django.core.management import execute_manager
+try:
+    import settings # Assumed to be in the same directory.
+except ImportError:
+    import sys
+    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
+    sys.exit(1)
+
+if __name__ == "__main__":
+    execute_manager(settings)
diff --git a/samples/django_sample/settings.py b/samples/django_sample/settings.py
new file mode 100644
index 0000000..834ce1f
--- /dev/null
+++ b/samples/django_sample/settings.py
@@ -0,0 +1,83 @@
+# Django settings for django_sample project.
+import os
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+    # ('Your Name', 'your_email@domain.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+DATABASE_NAME = 'database.sqlite3'             # Or path to database file if using sqlite3.
+DATABASE_USER = ''             # Not used with sqlite3.
+DATABASE_PASSWORD = ''         # Not used with sqlite3.
+DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
+DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/New_York'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# Absolute path to the directory that holds media.
+# Example: "/home/media/media.lawrence.com/"
+MEDIA_ROOT = ''
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash if there is a path component (optional in other cases).
+# Examples: "http://media.lawrence.com", "http://example.com/media/"
+MEDIA_URL = ''
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/media/'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = '_=9hq-$t_uv1ckf&s!y2$9g$1dm*6p1cl%*!^mg=7gr)!zj32d'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.load_template_source',
+    'django.template.loaders.app_directories.load_template_source',
+#     'django.template.loaders.eggs.load_template_source',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+)
+
+ROOT_URLCONF = 'django_sample.urls'
+
+TEMPLATE_DIRS = (
+    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+    # Always use forward slashes, even on Windows.
+    # Don't forget to use absolute paths, not relative paths.
+    os.path.join(os.path.dirname(__file__), 'templates')
+)
+
+INSTALLED_APPS = (
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django_sample.buzz'
+)
diff --git a/samples/django_sample/static/go.png b/samples/django_sample/static/go.png
new file mode 100644
index 0000000..e5aacda
--- /dev/null
+++ b/samples/django_sample/static/go.png
Binary files differ
diff --git a/samples/django_sample/templates/buzz/login.html b/samples/django_sample/templates/buzz/login.html
new file mode 100644
index 0000000..567bf68
--- /dev/null
+++ b/samples/django_sample/templates/buzz/login.html
@@ -0,0 +1,23 @@
+{% block content %}
+
+{% if form.errors %}
+<p>Your username and password didn't match. Please try again.</p>
+{% endif %}
+
+<form method="post" action="{% url django.contrib.auth.views.login %}">
+<table>
+<tr>
+    <td>{{ form.username.label_tag }}</td>
+    <td>{{ form.username }}</td>
+</tr>
+<tr>
+    <td>{{ form.password.label_tag }}</td>
+    <td>{{ form.password }}</td>
+</tr>
+</table>
+
+<input type="submit" value="login" />
+<input type="hidden" name="next" value="{{ next }}" />
+</form>
+
+{% endblock %}
diff --git a/samples/django_sample/templates/buzz/welcome.html b/samples/django_sample/templates/buzz/welcome.html
new file mode 100644
index 0000000..07e8027
--- /dev/null
+++ b/samples/django_sample/templates/buzz/welcome.html
@@ -0,0 +1,33 @@
+
+<html>
+  <head>
+    <title>Buzz Stuff</title>
+    <style type=text/css>
+      td  { vertical-align: top; padding: 0.5em }
+      img { border:0 }
+    </style>
+  </head>
+  <body>
+      <table border=0>
+      {% for item in activitylist.items %}
+      <tr valign=top>
+        <td>
+          {% if item.actor.thumbnailUrl %}
+            <a href="{{ item.actor.profileUrl }}">
+              <img src="{{ item.actor.thumbnailUrl }}">
+            </a>
+          {% endif %}
+          <br>
+          <a href="{{ item.actor.profileUrl }}">{{ item.actor.name }}</a></td>
+      <td>
+        {{ item.object.content|safe }}
+        </td>
+        <td>
+          <a href="{{ item.object.links.alternate.0.href }}"><img
+            src="/static/go.png"></a>
+        </td>
+      </tr>
+      {% endfor %}
+      </table>
+  </body>
+</html>
diff --git a/samples/django_sample/urls.py b/samples/django_sample/urls.py
new file mode 100644
index 0000000..aeba620
--- /dev/null
+++ b/samples/django_sample/urls.py
@@ -0,0 +1,25 @@
+import os
+from django.conf.urls.defaults import *
+
+# Uncomment the next two lines to enable the admin:
+from django.contrib import admin
+admin.autodiscover()
+
+urlpatterns = patterns('',
+    # Example:
+    (r'^$', 'django_sample.buzz.views.index'),
+    (r'^auth_return', 'django_sample.buzz.views.auth_return'),
+
+    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
+    # to INSTALLED_APPS to enable admin documentation:
+    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
+
+    # Uncomment the next line to enable the admin:
+    (r'^admin/', include(admin.site.urls)),
+    (r'^accounts/login/$', 'django.contrib.auth.views.login',
+                        {'template_name': 'buzz/login.html'}),
+
+    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
+        {'document_root': os.path.join(os.path.dirname(__file__), 'static')
+}),
+)
