|
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
|
|
|