(20241122) Port no. adjusted.

This commit is contained in:
2024-11-22 18:54:01 +05:30
parent bfc0c31a4b
commit 1519ee00c1
5 changed files with 281 additions and 1 deletions
View File
+152
View File
@@ -0,0 +1,152 @@
"""
AUTHOR:
Khushal P Soonderji
DATE:
Friday, 22nd Nov., 2024
OBJECTIVE:
To handle OAuth2.0 activities for Google's services.
REFERENCES:
1. https://developers.google.com/calendar/api/quickstart/python
DOWNLOADS:
N/A
"""
# *****************************************************************************************************************
# ***** ****
# *** IMPORT ***
# ***** ****
# *****************************************************************************************************************
# To make sibling directories accessible for imports:
import sys
sys.path.append(".")
sys.path.append("..")
# System-level activities:
import io
# My utils:
from utils_v2.string import json
# The base model:
from utils_v2.oauth.base import OAuthBase
# Related to Google:
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
# For asynchronous activities:
import asyncio
# *****************************************************************************************************************
# ***** ****
# *** MACROS / ONE-TIME INIT ***
# ***** ****
# *****************************************************************************************************************
# Google Scopes:
SCOPES_GMAIL_MAIL_MANAGEMENT = [
r"https://www.googleapis.com/auth/gmail.modify",
r"https://www.googleapis.com/auth/gmail.labels"
]
SCOPES_GMAIL_FULL = [r"https://mail.google.com/"]
# *****************************************************************************************************************
# ***** ****
# *** VARIABLES ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** FUNCTIONS ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** CLASSES ***
# ***** ****
# *****************************************************************************************************************
class GoogleOAuth(OAuthBase):
# Class variables:
__flow = None
async def init(
self,
scopes = None
):
# Initialize your Google App:
self._printer("Initializing flow.")
self.__flow = InstalledAppFlow.from_client_config(
self._config,
scopes = scopes or SCOPES_GMAIL_MAIL_MANAGEMENT,
redirect_uri = self._redirect_url
)
async def get_authorization_url(self):
authorization_url, state = self.__flow.authorization_url(
access_type = "offline",
include_granted_scopes = "true"
)
return authorization_url
# *****************************************************************************************************************
# ***** ****
# *** MAIN PROGRAM ***
# ***** ****
# *****************************************************************************************************************
if __name__ == "__main__":
secrets_file = r"../../../creds/google_converse_test_oauth.json"
secrets_dict = json.from_file(secrets_file)
my_goog = GoogleOAuth(
config = secrets_dict,
# redirect_url = r"https://v2.api.bicree.com/user/callback/test",
redirect_url = r"127.0.0.1",
debug = True,
debug_prefix = "OAuth (Goog) | "
)
async def main():
await my_goog.init()
print("AUTH URL:", await my_goog.get_authorization_url())
asyncio.run(main())