diff --git a/example/example.py b/example/example.py
index 1ec7bb6..24f5616 100644
--- a/example/example.py
+++ b/example/example.py
@@ -14,6 +14,8 @@
      redirect, url_for, abort
 from flask.ext.openid import OpenID
 
+from openid.extensions import pape
+
 from sqlalchemy import create_engine, Column, Integer, String
 from sqlalchemy.orm import scoped_session, sessionmaker
 from sqlalchemy.ext.declarative import declarative_base
@@ -27,7 +29,7 @@
 )
 
 # setup flask-openid
-oid = OpenID(app, safe_roots=[])
+oid = OpenID(app, safe_roots=[], extension_responses=[pape.Response])
 
 # setup sqlalchemy
 engine = create_engine(app.config['DATABASE_URI'])
@@ -84,8 +86,10 @@
     if request.method == 'POST':
         openid = request.form.get('openid')
         if openid:
+            pape_req = pape.Request([])
             return oid.try_login(openid, ask_for=['email', 'nickname'],
-                                         ask_for_optional=['fullname'])
+                                         ask_for_optional=['fullname'],
+                                         extensions=[pape_req])
     return render_template('login.html', next=oid.get_next_url(),
                            error=oid.fetch_error())
 
@@ -98,6 +102,9 @@
     with a terrible URL which we certainly don't want.
     """
     session['openid'] = resp.identity_url
+    if 'pape' in resp.extensions:
+        pape_resp = resp.extensions['pape']
+        session['auth_time'] = pape_resp.auth_time
     user = User.query.filter_by(openid=resp.identity_url).first()
     if user is not None:
         flash(u'Successfully signed in')
