aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/gmail_helpers.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/python/gmail_helpers.py b/python/gmail_helpers.py
index d9557b3b..67ca81ec 100644
--- a/python/gmail_helpers.py
+++ b/python/gmail_helpers.py
@@ -1,8 +1,9 @@
from apiclient.discovery import build
from apiclient import errors
from email.message import EmailMessage
-from httplib2 import Http
-from oauth2client import client, tools
+from google.oauth2.credentials import Credentials
+from google_auth_oauthlib.flow import InstalledAppFlow
+
import argparse
import base64
import email
@@ -10,7 +11,7 @@ import json
import oauth2client
import os
-SCOPES = 'https://www.googleapis.com/auth/gmail.modify'
+SCOPES = ['https://www.googleapis.com/auth/gmail.modify']
CLIENT_SECRET_FILE = 'secret.json'
APPLICATION_NAME = 'Swaptions'
@@ -29,15 +30,17 @@ def get_gmail_service():
credential_path = os.path.join(credential_dir,
'guillaume.horel@serenitascapital.com.json')
- store = oauth2client.file.Storage(credential_path)
- credentials = store.get()
- if not credentials or credentials.invalid:
- flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
- flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
- flow.user_agent = APPLICATION_NAME
- credentials = tools.run_flow(flow, store, flags)
- print('Storing credentials to ' + credential_path)
- service = build('gmail', 'v1', http=credentials.authorize(Http()))
+ try:
+ credentials = Credentials.from_authorized_user_file(credential_path)
+ except:
+ flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
+ credentials = flow.run_console()
+ to_save= {}
+ for attr in ["token", "refresh_token", "id_token", "token_uri", "client_id", "client_secret", "scopes"]:
+ to_save[attr] = getattr(credentials, attr)
+ with open(credential_path, "w") as fh:
+ json.dump(to_save, fh)
+ service = build('gmail', 'v1', credentials=credentials)
return service
def ListMessagesWithLabels(service, user_id, label_ids=[]):