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 | |