+#!/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()