A python library for authenticating requests for various google services including ``gmail``, ``youtube``, ``drive`` and ``calendar``.
Project description
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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oryks-google-oauth-0.1.2.tar.gz.
File metadata
- Download URL: oryks-google-oauth-0.1.2.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a89dda89db9a552959ea497fc441ec7fb0416586facabd4632e42d72d85a911c
|
|
| MD5 |
b631ae2480975fc2a8a16be0f3f4813d
|
|
| BLAKE2b-256 |
84ba6fcfd8d98e04241843ce21d7cbbb323855a85d040c6324ff8896fe4de462
|
File details
Details for the file oryks_google_oauth-0.1.2-py3-none-any.whl.
File metadata
- Download URL: oryks_google_oauth-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9f5d9615bbc98be3d9eaef0270550298138cd82492e16b4a39409b49cf81d0f
|
|
| MD5 |
c0bbf838112a34dd833d8d3ad8de82b3
|
|
| BLAKE2b-256 |
b06ba4cd96df6536dd332ce7a0c014b179f51eb9b89247c429290f15a9586ff0
|