Updated versions
diff --git a/samples/gan/ccoffers/offers.py b/samples/gan/ccoffers/offers.py
index 6e5168c..ddc967a 100644
--- a/samples/gan/ccoffers/offers.py
+++ b/samples/gan/ccoffers/offers.py
@@ -21,7 +21,8 @@
from apiclient.discovery import build
from oauth2client.file import Storage
-from oauth2client.client import OAuth2WebServerFlow
+from oauth2client.client import AccessTokenRefreshError
+from oauth2client.client import flow_from_clientsecrets
from oauth2client.tools import run
settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
@@ -30,20 +31,30 @@
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='767567128246-ti2q06i1neqm5boe2m1pqdc2riivhk41.apps.googleusercontent.com',
- client_secret='UtdXI8nKD2SEcQRLQDZPkGT9',
+# 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/gan.readonly',
- user_agent='gan-ccoffers-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
@@ -55,10 +66,10 @@
gflags.DEFINE_enum("output_type", 'STDOUT', ['BOTH', 'HTML', 'STDOUT'],
'Set how to output the results received from the API')
-gflags.DEFINE_string('credentials_filename', 'offers.dat',
+gflags.DEFINE_string('credentials_filename', '../credentials.dat',
'File to store credentials in', short_name='cf')
-gflags.DEFINE_multistring('advertiser', None,
+gflags.DEFINE_multistring('advertiser', [],
'If given, advertiser we should run as')
@@ -100,16 +111,15 @@
ccOffers = service.ccOffers()
# Retrieve the relevant offers.
- list_call = ccOffers.list(publisher=publisher,
- # TODO(leadpipe): add back when advertiser is repeated
- # advertiser=FLAGS.advertiser,
- projection='full')
- list = list_call.execute()
- list['publisher'] = publisher
+ request = ccOffers.list(publisher=publisher,
+ advertiser=FLAGS.advertiser,
+ projection='full')
+ response = request.execute()
+ response['publisher'] = publisher
if FLAGS.output_type in ["BOTH", "HTML"]:
template = get_template('offers_template.html')
- context = Context(list)
+ context = Context(response)
fname = '%s.html' % publisher
out = open(fname, 'w')
@@ -120,7 +130,7 @@
print 'Wrote %s' % fname
if FLAGS.output_type in ["BOTH", "STDOUT"]:
- print json.dumps(list, sort_keys=True, indent=4)
+ print json.dumps(response, sort_keys=True, indent=4)
if __name__ == '__main__':
main(sys.argv)