]> git.cworth.org Git - turbot/blobdiff - gsheets-authenticate.py
Initial implement of auto-creation of Google sheets
[turbot] / gsheets-authenticate.py
diff --git a/gsheets-authenticate.py b/gsheets-authenticate.py
new file mode 100755 (executable)
index 0000000..7140b8e
--- /dev/null
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import pickle
+import os.path
+from google_auth_oauthlib.flow import InstalledAppFlow
+from google.auth.transport.requests import Request
+
+# If modifying these scopes, delete the file token.pickle.
+SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
+
+TOKEN_FILE = ".gsheets-token.pickle"
+
+def main():
+    """Allows user to authenticate for the Sheets API.
+
+    Resulting authorization token is stored in token.pickle.
+    """
+    creds = None
+    # The file token.pickle stores the user's access and refresh tokens, and is
+    # created automatically when the authorization flow completes for the first
+    # time.
+    if os.path.exists(TOKEN_FILE):
+        with open(TOKEN_FILE, 'rb') as token:
+            creds = pickle.load(token)
+
+    # If there are no (valid) credentials available, let the user log in.
+    if not creds or not creds.valid:
+        if creds and creds.expired and creds.refresh_token:
+            creds.refresh(Request())
+        else:
+            flow = InstalledAppFlow.from_client_secrets_file(
+                'credentials.json', SCOPES)
+            creds = flow.run_local_server(port=0)
+        # Save the credentials for the next run
+        with open(TOKEN_FILE, 'wb') as token:
+            pickle.dump(creds, token)
+
+    print("Token now saved in {}".format(TOKEN_FILE))
+
+if __name__ == '__main__':
+    main()