import random import googleapiclient.discovery import httplib2 import oauth2client from oauth2client.service_account import ServiceAccountCredentials def refreshCredentials(config): service_acconts = config.get("service_accounts") if type(service_acconts) == list: if len(service_acconts) > 0: random_sa = random.choice(service_acconts) credentials = ServiceAccountCredentials.from_json_keyfile_dict( random_sa, "https://www.googleapis.com/auth/drive", "https://accounts.google.com/o/oauth2/token", ) else: credentials = oauth2client.client.GoogleCredentials( config.get("access_token"), config.get("client_id"), config.get("client_secret"), config.get("refresh_token"), None, "https://accounts.google.com/o/oauth2/token", None, ) else: credentials = oauth2client.client.GoogleCredentials( config.get("access_token"), config.get("client_id"), config.get("client_secret"), config.get("refresh_token"), None, "https://accounts.google.com/o/oauth2/token", None, ) http = credentials.authorize(httplib2.Http()) credentials.refresh(http) config["access_token"] = credentials.access_token config["token_expiry"] = str(credentials.token_expiry) drive = googleapiclient.discovery.build("drive", "v3", credentials=credentials) return config, drive