--- a/ckanext/ga_report/ga_auth.py +++ b/ckanext/ga_report/ga_auth.py @@ -1,1 +1,45 @@ +import httplib2 +from apiclient.discovery import build +from oauth2client.client import flow_from_clientsecrets +from oauth2client.file import Storage +from oauth2client.tools import run +from pylons import config + + +def _prepare_credentials( token_filename, credentials_filename ): + storage = Storage( token_filename ) + credentials = storage.get() + + if credentials is None or credentials.invalid: + flow = flow_from_clientsecrets(credentials_filename, + scope='https://www.googleapis.com/auth/analytics.readonly', + message="Can't find the credentials file") + credentials = run(flow, storage) + + return credentials + +def initialize_service( token_file, credentials_file ): + http = httplib2.Http() + + credentials = _prepare_credentials(token_file, credentials_file) + http = credentials.authorize(http) # authorize the http object + + return build('analytics', 'v3', http=http) + +def get_profile_id(service): + # Get a list of all Google Analytics accounts for this user + accounts = service.management().accounts().list().execute() + + if accounts.get('items'): + firstAccountId = accounts.get('items')[0].get('id') + webPropertyId = config.get('googleanalytics.id') + profiles = service.management().profiles().list( + accountId=firstAccountId, + webPropertyId=webPropertyId).execute() + + if profiles.get('items'): + # return the first Profile ID + return profiles.get('items')[0].get('id') + + return None