diff --git a/samples/oauth2/dailymotion/apiclient b/samples/oauth2/dailymotion/apiclient
new file mode 120000
index 0000000..f53af07
--- /dev/null
+++ b/samples/oauth2/dailymotion/apiclient
@@ -0,0 +1 @@
+../../../apiclient/
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/app.yaml b/samples/oauth2/dailymotion/app.yaml
new file mode 100644
index 0000000..a712bd2
--- /dev/null
+++ b/samples/oauth2/dailymotion/app.yaml
@@ -0,0 +1,9 @@
+application: dailymotoauth2test
+version: 1
+runtime: python
+api_version: 1
+
+handlers:
+- url: .*
+  script: main.py
+
diff --git a/samples/oauth2/dailymotion/gflags.py b/samples/oauth2/dailymotion/gflags.py
new file mode 120000
index 0000000..157177e
--- /dev/null
+++ b/samples/oauth2/dailymotion/gflags.py
@@ -0,0 +1 @@
+../../../gflags.py
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/gflags_validators.py b/samples/oauth2/dailymotion/gflags_validators.py
new file mode 120000
index 0000000..9d359e0
--- /dev/null
+++ b/samples/oauth2/dailymotion/gflags_validators.py
@@ -0,0 +1 @@
+../../../gflags_validators.py
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/httplib2 b/samples/oauth2/dailymotion/httplib2
new file mode 120000
index 0000000..69b02ef
--- /dev/null
+++ b/samples/oauth2/dailymotion/httplib2
@@ -0,0 +1 @@
+../../../httplib2/
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/index.yaml b/samples/oauth2/dailymotion/index.yaml
new file mode 100644
index 0000000..a3b9e05
--- /dev/null
+++ b/samples/oauth2/dailymotion/index.yaml
@@ -0,0 +1,11 @@
+indexes:
+
+# AUTOGENERATED
+
+# This index.yaml is automatically updated whenever the dev_appserver
+# detects that a new type of query is run.  If you want to manage the
+# index.yaml file manually, remove the above marker line (the line
+# saying "# AUTOGENERATED").  If you want to manage some indexes
+# manually, move them above the marker line.  The index.yaml file is
+# automatically uploaded to the admin console when you next deploy
+# your application using appcfg.py.
diff --git a/samples/oauth2/dailymotion/main.py b/samples/oauth2/dailymotion/main.py
new file mode 100644
index 0000000..c904e3b
--- /dev/null
+++ b/samples/oauth2/dailymotion/main.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+__author__ = 'jcgregorio@google.com (Joe Gregorio)'
+
+
+import httplib2
+import logging
+import os
+import pickle
+
+from apiclient.discovery import build
+from oauth2client.appengine import CredentialsProperty
+from oauth2client.appengine import StorageByKeyName
+from oauth2client.client import OAuth2WebServerFlow
+from google.appengine.api import memcache
+from google.appengine.api import users
+from google.appengine.ext import db
+from google.appengine.ext import webapp
+from google.appengine.ext.webapp import template
+from google.appengine.ext.webapp import util
+from google.appengine.ext.webapp.util import login_required
+
+
+class Credentials(db.Model):
+  credentials = CredentialsProperty()
+
+
+class MainHandler(webapp.RequestHandler):
+
+  @login_required
+  def get(self):
+    user = users.get_current_user()
+    credentials = StorageByKeyName(
+        Credentials, user.user_id(), 'credentials').get()
+
+    if credentials is None or credentials.invalid == True:
+      flow = OAuth2WebServerFlow(
+          client_id='2ad565600216d25d9cde',
+          client_secret='03b56df2949a520be6049ff98b89813f17b467dc',
+          scope='read',
+          user_agent='oauth2client-sample/1.0',
+          auth_uri='https://api.dailymotion.com/oauth/authorize',
+          token_uri='https://api.dailymotion.com/oauth/token'
+          )
+
+      callback = self.request.relative_url('/auth_return')
+      authorize_url = flow.step1_get_authorize_url(callback)
+      memcache.set(user.user_id(), pickle.dumps(flow))
+      self.redirect(authorize_url)
+    else:
+      http = httplib2.Http()
+
+      resp, content1 = http.request('https://api.dailymotion.com/me?access_token=%s' %
+                   credentials.access_token)
+
+      http = credentials.authorize(http)
+      resp, content2 = http.request('https://api.dailymotion.com/me')
+
+      path = os.path.join(os.path.dirname(__file__), 'welcome.html')
+      logout = users.create_logout_url('/')
+      self.response.out.write(
+          template.render(
+              path, {
+                  'content1': content1,
+                  'content2': content2,
+                  'logout': logout
+                  }))
+
+
+class OAuthHandler(webapp.RequestHandler):
+
+  @login_required
+  def get(self):
+    user = users.get_current_user()
+    flow = pickle.loads(memcache.get(user.user_id()))
+    if flow:
+      credentials = flow.step2_exchange(self.request.params)
+      StorageByKeyName(
+          Credentials, user.user_id(), 'credentials').put(credentials)
+      self.redirect("/")
+    else:
+      pass
+
+
+def main():
+  application = webapp.WSGIApplication(
+      [
+      ('/', MainHandler),
+      ('/auth_return', OAuthHandler)
+      ],
+      debug=True)
+  util.run_wsgi_app(application)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/samples/oauth2/dailymotion/oauth2client b/samples/oauth2/dailymotion/oauth2client
new file mode 120000
index 0000000..0a1ec33
--- /dev/null
+++ b/samples/oauth2/dailymotion/oauth2client
@@ -0,0 +1 @@
+../../../oauth2client/
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/simplejson b/samples/oauth2/dailymotion/simplejson
new file mode 120000
index 0000000..eeaa2f0
--- /dev/null
+++ b/samples/oauth2/dailymotion/simplejson
@@ -0,0 +1 @@
+../../../simplejson/
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/uritemplate b/samples/oauth2/dailymotion/uritemplate
new file mode 120000
index 0000000..5952908
--- /dev/null
+++ b/samples/oauth2/dailymotion/uritemplate
@@ -0,0 +1 @@
+../../../uritemplate/
\ No newline at end of file
diff --git a/samples/oauth2/dailymotion/welcome.html b/samples/oauth2/dailymotion/welcome.html
new file mode 100644
index 0000000..06fcb95
--- /dev/null
+++ b/samples/oauth2/dailymotion/welcome.html
@@ -0,0 +1,16 @@
+<html>
+  <head>
+    <title>Daily Motion Sample</title>
+    <style type=text/css>
+      td  { vertical-align: top; padding: 0.5em }
+      img { border:0 }
+    </style>
+  </head>
+  <body>
+    <p><a href="{{ logout }}">Logout</a></p>
+    <h2>First request with access_token in query parameter:</h2>
+    <pre>{{ content1 }} </pre>
+    <h2>Second request with access_token in header:</h2>
+    <pre>{{ content2 }} </pre>
+  </body>
+</html>
