diff --git a/samples/audit/audit.py b/samples/audit/audit.py
index e934093..c34de84 100644
--- a/samples/audit/audit.py
+++ b/samples/audit/audit.py
@@ -39,54 +39,59 @@
 import gflags
 import httplib2
 import logging
-import re
-import simplejson
+import os
+import pprint
 import sys
 
 from apiclient.discovery import build
 from oauth2client.client import AccessTokenRefreshError
-from oauth2client.client import OAuth2WebServerFlow
+from oauth2client.client import flow_from_clientsecrets
 from oauth2client.file import Storage
 from oauth2client.tools import run
 
+
 FLAGS = gflags.FLAGS
 
-# Set up a Flow object to be used if we need to authenticate. This
-# sample uses OAuth 2.0, and we set up the OAuth2WebServerFlow with
-# the information it needs to authenticate. Note that it is called
-# the Web Server Flow, but it can also handle the flow for native
-# applications <http://code.google.com/apis/accounts/docs/OAuth2.html#IA>
-# When creating credentials for this application be sure to choose an
-# Application type of 'Installed application'.
-FLOW = OAuth2WebServerFlow(
-    client_id='880851855448.apps.googleusercontent.com',
-    client_secret='d8nBjlNBpOMH_LITqz31IMdI',
-    scope='https://www.googleapis.com/auth/apps/reporting/audit.readonly',
-    user_agent='audit-cmdline-sample/1.0')
+# CLIENT_SECRETS, name of a file containing the OAuth 2.0 information for this
+# application, including client_id and client_secret, which are found
+# on the API Access tab on the Google APIs
+# Console <http://code.google.com/apis/console>
+CLIENT_SECRETS = 'client_secrets.json'
 
-# The flags module makes defining command-line options easy for
+# Helpful message to display in the browser if the CLIENT_SECRETS file
+# is missing.
+MISSING_CLIENT_SECRETS_MESSAGE = """
+WARNING: Please configure OAuth 2.0
+
+To make this sample run you will need to populate the client_secrets.json file
+found at:
+
+   %s
+
+with information from the APIs Console <https://code.google.com/apis/console>.
+
+""" % os.path.join(os.path.dirname(__file__), CLIENT_SECRETS)
+
+# Set up a Flow object to be used if we need to authenticate.
+FLOW = flow_from_clientsecrets(CLIENT_SECRETS,
+    scope='https://www.googleapis.com/auth/apps/reporting/audit.readonly',
+    message=MISSING_CLIENT_SECRETS_MESSAGE)
+
+
+# The gflags module makes defining command-line options easy for
 # applications. Run this program with the '--help' argument to see
 # all the flags that it understands.
 gflags.DEFINE_enum('logging_level', 'ERROR',
-                  ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'],
-                  'Set the level of logging detail.')
-
-
-def print_activities(activity_list):
-  events = activity_list['items']
-  print '\nRetrieved %d activities.' % len(events)
-  for i in range(len(events)):
-    print '\nEvent %d : %s' % (i, simplejson.JSONEncoder().encode(events[i]))
-  print '\nNext URL : %s' % (activity_list['next'])
-  print '======================================================================'
+    ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'],
+    'Set the level of logging detail.')
 
 
 def main(argv):
-  # Let the flags module process the command-line arguments
+  # Let the gflags module process the command-line arguments
   try:
     argv = FLAGS(argv)
   except gflags.FlagsError, e:
-    print '%s\nUsage: %s ARGS\n%s' % (e, argv[0], FLAGS)
+    print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS)
     sys.exit(1)
 
   # Set the logging according to the command-line flag
@@ -95,9 +100,10 @@
   # If the Credentials don't exist or are invalid run through the native client
   # flow. The Storage object will ensure that if successful the good
   # Credentials will get written back to a file.
-  storage = Storage('audit.dat')
+  storage = Storage('plus.dat')
   credentials = storage.get()
-  if not credentials or credentials.invalid:
+
+  if credentials is None or credentials.invalid:
     credentials = run(FLOW, storage)
 
   # Create an httplib2.Http object to handle our HTTP requests and authorize it
@@ -131,7 +137,8 @@
 
   except AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run'
-           'the application to re-authorize')
+      'the application to re-authorize')
 
 if __name__ == '__main__':
   main(sys.argv)
+
diff --git a/samples/audit/client_secrets.json b/samples/audit/client_secrets.json
new file mode 100644
index 0000000..a232f37
--- /dev/null
+++ b/samples/audit/client_secrets.json
@@ -0,0 +1,9 @@
+{
+  "web": {
+    "client_id": "[[INSERT CLIENT ID HERE]]",
+    "client_secret": "[[INSERT CLIENT SECRET HERE]]",
+    "redirect_uris": [],
+    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+    "token_uri": "https://accounts.google.com/o/oauth2/token"
+  }
+}
