Spaces:
Runtime error
Runtime error
import os.path | |
from google.auth.transport.requests import Request | |
from google.oauth2.credentials import Credentials | |
from google_auth_oauthlib.flow import InstalledAppFlow | |
from google_manager.constants import SCOPES | |
from starlette.responses import RedirectResponse | |
from gradio.routes import App | |
import google.oauth2.credentials | |
import google_auth_oauthlib.flow | |
def authenticate(SCOPES): | |
""" | |
Request access for the google docs api | |
""" | |
creds = None | |
if os.path.exists("token.json"): | |
creds = Credentials.from_authorized_user_file("token.json", SCOPES) | |
# 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=7200) | |
# Save the credentials for the next run | |
with open("token.json", "w") as token: | |
token.write(creds.to_json()) | |
return creds | |
def get_oauth_url(SCOPES, redirect_url): | |
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file( | |
"credentials.json", scopes=SCOPES | |
) | |
# flow.redirect_uri = "http://127.0.0.1:8000/gradio/?__theme=dark" | |
# flow.redirect_uri = app.url_path_for(redirect_url) | |
flow.redirect_uri = redirect_url | |
# Generate URL for request to Google's OAuth 2.0 server. | |
# Use kwargs to set optional request parameters. | |
authorization_url, state = flow.authorization_url( | |
# Enable offline access so that you can refresh an access token without | |
# re-prompting the user for permission. Recommended for web server apps. | |
access_type="offline", | |
# Enable incremental authorization. Recommended as a best practice. | |
include_granted_scopes="true", | |
) | |
print("state") | |
print(state) | |
return authorization_url | |
def authenticate_production(SCOPES): | |
creds = None | |
if os.path.exists("token.json"): | |
creds = Credentials.from_authorized_user_file("token.json", SCOPES) | |
# 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=7200) | |
# Save the credentials for the next run | |
with open("token.json", "w") as token: | |
token.write(creds.to_json()) | |
return creds | |