oryks-google-oauth 0.1.2

Creator: railscoder56

Last updated:

Add to Cart

Description:

oryksgoogleoauth 0.1.2

google-oauth
Overview
A python library for authenticating requests for various google services including gmail, youtube, drive and calendar.
Requirements

Python 3.10+
Works on Linux, Windows, macOS, BSD

Getting started
Getting an access key
To get started with this library, you need a google account in order to obtain access credentials. First, pick a service that you want to use, which could be:
- gmail
- youtube
- drive
- calendar
Installing the library
The next step is to instal the library from pypi:
pip install oryks-google-oauth

Authorizing a request
In this case we will use youtube as the service. We will authorize a request to search youtube for python programming videos:
from oryks_google_oauth import GoogleOAuth, YouTubeScopes

client_secret_file: str = 'client_secret.json'
api_service_name: str = 'youtube'
api_version: str = 'v3'
credentials_dir: str = '.youtube'
scopes: list[str] = [YouTubeScopes.youtube.value]
oauth: GoogleOAuth = GoogleOAuth(
secrets_file=secret_file,
scopes=scopes,
api_service_name=api_service_name,
api_version=api_version,
credentials_dir=credentials_dir
)
youtube_client = oauth.authenticate_google_server()
youtube_find_request = youtube_client.search().list(q='python programming videos', part='id, snippet')
print(youtube_find_request.execute())

Using the Flask Framework
Currently, this library does not intergrate with web frameworks like Flask and fastAPI. To use flask, we use the underlying library:
from flask import Flask, url_for, redirect, request, session
from google_auth_oauthlib.flow import Flow
from google.oauth2.credentials import Credentials
import os


CLIENT_SECRETS_FILE = "client_secret.json"
SCOPES = [
'https://www.googleapis.com/auth/youtube.force-ssl',
'https://www.googleapis.com/auth/youtube'
]
API_SERVICE_NAME = 'youtube'
API_VERSION = 'v3'

app: Flask = Flask(__name__)
app.secret_key = 'secret-key'


@app.route('/')
def home():
if not session['credentials']:
redirect(url_for('authorize'))
return 'Home'


@app.route('/authorize')
def authorize():
flow = Flow.from_client_secrets_file(
CLIENT_SECRETS_FILE,
scopes=SCOPES
)
flow.redirect_uri = url_for('oauth2callback', _external=True)
authorization_url, state = flow.authorization_url(
access_type='offline',
include_granted_scopes='true'
)
session['state'] = state
return redirect(authorization_url)


def credentials_to_dict(credentials: Credentials) -> dict:
return {
'token': credentials.token,
'refresh_token': credentials.refresh_token,
'token_uri': credentials.token_uri,
'client_id': credentials.client_id,
'client_secret': credentials.client_secret,
'scopes': credentials.scopes
}


@app.route('/oauth2callback')
def oauth2callback():
state = session['state']
flow = Flow.from_client_secrets_file(
CLIENT_SECRETS_FILE,
scopes=SCOPES,
state=state
)
flow.redirect_uri = url_for('oauth2callback', _external=True)
authorization_response = request.url
flow.fetch_token(authorization_response=authorization_response)
credentials: Credentials = flow.credentials
session['credentials'] = credentials_to_dict(credentials)
return redirect('/')


if __name__ == '__main__':
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
app.run('localhost', 5000, debug=True)

How to Contribute
To contribute, chack out the contribution guideline.
License
The API uses an MIT License
Developer
Lyle Okoth – @lyleokoth on twitter
lyle okoth on medium
My email is lyceokoth@gmail.com
Here is my GitHub Profile
You can also find me on Linkedin

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.