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"
+  }
+}
diff --git a/samples/moderator/client_secrets.json b/samples/moderator/client_secrets.json
new file mode 100644
index 0000000..a232f37
--- /dev/null
+++ b/samples/moderator/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"
+  }
+}
diff --git a/samples/moderator/moderator.py b/samples/moderator/moderator.py
index e92ef1b..79e99c0 100644
--- a/samples/moderator/moderator.py
+++ b/samples/moderator/moderator.py
@@ -37,31 +37,44 @@
 import gflags
 import httplib2
 import logging
+import os
 import pprint
 import sys
 
 from apiclient.discovery import build
-from oauth2client.file import Storage
 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>
-# The client_id client_secret are copied from the API Access tab on
-# the Google APIs Console <http://code.google.com/apis/console>. When
-# creating credentials for this application be sure to choose an Application
-# type of "Installed application".
-FLOW = OAuth2WebServerFlow(
-    client_id='433807057907.apps.googleusercontent.com',
-    client_secret='jigtZpMApkRxncxikFpR+SFg',
+# 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'
+
+# 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/moderator',
-    user_agent='moderator-cmdline-sample/1.0')
+    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
@@ -85,8 +98,9 @@
   # 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('moderator.dat')
+  storage = Storage('plus.dat')
   credentials = storage.get()
+
   if credentials is None or credentials.invalid:
     credentials = run(FLOW, storage)
 
@@ -95,54 +109,55 @@
   http = httplib2.Http()
   http = credentials.authorize(http)
 
-  service = build("moderator", "v1", http=http)
+  service = build('moderator', 'v1', http=http)
 
   try:
 
     # Create a new Moderator series.
     series_body = {
-          "description": "Share and rank tips for eating healthy and cheap!",
-          "name": "Eating Healthy & Cheap",
-          "videoSubmissionAllowed": False
+          'description': 'Share and rank tips for eating healthy and cheap!',
+          'name': 'Eating Healthy & Cheap',
+          'videoSubmissionAllowed': False
           }
     series = service.series().insert(body=series_body).execute()
-    print "Created a new series"
+    print 'Created a new series'
 
     # Create a new Moderator topic in that series.
     topic_body = {
-          "description": "Share your ideas on eating healthy!",
-          "name": "Ideas",
-          "presenter": "liz"
+          'description': 'Share your ideas on eating healthy!',
+          'name': 'Ideas',
+          'presenter': 'liz'
           }
     topic = service.topics().insert(seriesId=series['id']['seriesId'],
                               body=topic_body).execute()
-    print "Created a new topic"
+    print 'Created a new topic'
 
     # Create a new Submission in that topic.
     submission_body = {
-          "attachmentUrl": "http://www.youtube.com/watch?v=1a1wyc5Xxpg",
-          "attribution": {
-            "displayName": "Bashan",
-            "location": "Bainbridge Island, WA"
+          'attachmentUrl': 'http://www.youtube.com/watch?v=1a1wyc5Xxpg',
+          'attribution': {
+            'displayName': 'Bashan',
+            'location': 'Bainbridge Island, WA'
             },
-          "text": "Charlie Ayers @ Google"
+          'text': 'Charlie Ayers @ Google'
           }
     submission = service.submissions().insert(seriesId=topic['id']['seriesId'],
         topicId=topic['id']['topicId'], body=submission_body).execute()
-    print "Inserted a new submisson on the topic"
+    print 'Inserted a new submisson on the topic'
 
     # Vote on that newly added Submission.
     vote_body = {
-          "vote": "PLUS"
+          'vote': 'PLUS'
           }
     service.votes().insert(seriesId=topic['id']['seriesId'],
                      submissionId=submission['id']['submissionId'],
                      body=vote_body)
-    print "Voted on the submission"
+    print 'Voted on the submission'
 
   except AccessTokenRefreshError:
-    print ("The credentials have been revoked or expired, please re-run"
-      "the application to re-authorize")
+    print ('The credentials have been revoked or expired, please re-run'
+      'the application to re-authorize')
 
 if __name__ == '__main__':
   main(sys.argv)
+
diff --git a/samples/storage_serviceaccount_appengine/main.py b/samples/storage_serviceaccount_appengine/main.py
index 738a109..1734e4f 100644
--- a/samples/storage_serviceaccount_appengine/main.py
+++ b/samples/storage_serviceaccount_appengine/main.py
@@ -17,17 +17,17 @@
 """This application produces formatted listings for Google Cloud
    Storage buckets.
 
-It takes a bucket name in the URL path and does an HTTP GET on the 
-corresponding Google Cloud Storage URL to obtain a listing of the 
-bucket contents. For example, if this app is invoked with the URI 
-http://bucket-list.appspot.com/foo, it would remove the bucket name 
-'foo', append it to the Google Cloud Storage service URI and send 
-a GET request to the resulting URI. The bucket listing is returned 
-in an XML document, which is prepended with a reference to an XSLT 
-style sheet for human readable presentation.
+It takes a bucket name in the URL path and does an HTTP GET on the
+corresponding Google Cloud Storage URL to obtain a listing of the bucket
+contents. For example, if this app is invoked with the URI
+http://bucket-list.appspot.com/foo, it would remove the bucket name 'foo',
+append it to the Google Cloud Storage service URI and send a GET request to
+the resulting URI. The bucket listing is returned in an XML document, which is
+prepended with a reference to an XSLT style sheet for human readable
+presentation.
 
-More information about using Google App Engine apps and service accounts
-to call Google APIs can be found here:
+More information about using Google App Engine apps and service accounts to
+call Google APIs can be found here:
 
 <https://developers.google.com/accounts/docs/OAuth2ServiceAccount>
 <http://code.google.com/appengine/docs/python/appidentity/overview.html>
@@ -73,7 +73,7 @@
         err = 'Error: ' + str(resp.status) + ', bucket: ' + bucket + \
               ', response: ' + str(content)
         raise Exception(err)
-      # Edit returned bucket listing XML to insert a reference to our style 
+      # Edit returned bucket listing XML to insert a reference to our style
       # sheet for nice formatting and send results to client.
       content = re.sub('(<ListBucketResult)', XSL + '\\1', content)
       self.response.headers['Content-Type'] = 'text/xml'
diff --git a/samples/urlshortener/client_secrets.json b/samples/urlshortener/client_secrets.json
new file mode 100644
index 0000000..a232f37
--- /dev/null
+++ b/samples/urlshortener/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"
+  }
+}
diff --git a/samples/urlshortener/urlshortener.py b/samples/urlshortener/urlshortener.py
index 4f32f6d..2eee1b5 100644
--- a/samples/urlshortener/urlshortener.py
+++ b/samples/urlshortener/urlshortener.py
@@ -38,31 +38,44 @@
 import gflags
 import httplib2
 import logging
+import os
 import pprint
 import sys
 
 from apiclient.discovery import build
-from oauth2client.file import Storage
 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>
-# The client_id client_secret are copied from the API Access tab on
-# the Google APIs Console <http://code.google.com/apis/console>. When
-# creating credentials for this application be sure to choose an Application
-# type of "Installed application".
-FLOW = OAuth2WebServerFlow(
-    client_id='[[CLIENT ID GOES HERE]]',
-    client_secret='[[CLIENT SECRET GOES HERE]]',
+# 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'
+
+# 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/urlshortener',
-    user_agent='urlshortener-cmdline-sample/1.0')
+    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
@@ -86,8 +99,9 @@
   # 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('urlshortener.dat')
+  storage = Storage('plus.dat')
   credentials = storage.get()
+
   if credentials is None or credentials.invalid:
     credentials = run(FLOW, storage)
 
@@ -96,14 +110,14 @@
   http = httplib2.Http()
   http = credentials.authorize(http)
 
-  service = build("urlshortener", "v1", http=http)
+  service = build('urlshortener', 'v1', http=http)
 
   try:
 
     url = service.url()
 
     # Create a shortened URL by inserting the URL into the url collection.
-    body = {"longUrl": "http://code.google.com/apis/urlshortener/" }
+    body = {'longUrl': 'http://code.google.com/apis/urlshortener/' }
     resp = url.insert(body=body).execute()
     pprint.pprint(resp)
 
@@ -113,10 +127,9 @@
     resp = url.get(shortUrl=short_url).execute()
     pprint.pprint(resp)
 
-
   except AccessTokenRefreshError:
-    print ("The credentials have been revoked or expired, please re-run"
-      "the application to re-authorize")
+    print ('The credentials have been revoked or expired, please re-run'
+      'the application to re-authorize')
 
 if __name__ == '__main__':
   main(sys.argv)
