Integrate Google OAuth in your Django Rest-framework project
Project description
Django Google Integrations
Django Google Integrations is a package that allows integrating Google OAuth into your Django application. It is build as a thin wrapper around the google-auth-oauthlib. You can view the full documentation at https://PrimedigitalGlobal.github.io/django-google-integrations/
Features
- Provides following APIs:
- Authorization URL API:
- It generates google
authorization-urlwhich redirects user to Google's Authorization Server to request consent from resource owner.
- It generates google
- Authorize Web API:
- Exchange authorization code for access token.
- Talk to resource server with access token and fetch user's profile information.
- Authorize IOS Token API:
- Verifies an ID Token issued by Google's OAuth 2.0 authorization server.
- Fetch user details from decoded token.
- Authorization URL API:
Dependencies
- Python >= 3.6
- Django >= 2.2.17
- djangorestframework >= 3.10.2
- google-api-python-client >= 2.9.0
- google-auth-httplib2 >= 0.1.0
- google-auth-oauthlib >= 0.4.1
Setup
You can install the library directly from pypi using pip:
$ pip install django-google-integrations
Edit your settings.py file:
INSTALLED_APPS = (
...
"django_google_integrations"
)
# Django Google Integrations Config
GOOGLE_CONFIG = {
"CLIENT_CONFIG_JSON": "[Google Client Config Json]",
"CLIENT_ID": "[Google Client ID]",
"CLIENT_SECRET": "[Google Client Secret]",
"SERVICE_ACCOUNT_SCOPES": [
"openid",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile",
],
"REDIRECT_URI": "http://localhost:3000/google/auth/callback",
"RESPONSE_HANDLER_CLASS": "example.testapp.google_response_handler.GoogleSigninResponseHandler",
}
Create Response Handler Class and update path in GOOGLE_CONFIG
from django_google_integrations.services import GoogleResponseHandler
class GoogleSigninResponseHandler(GoogleResponseHandler):
def handle_fetch_or_create_user(self, flow, google_user_data):
email = google_user_data.get("email", None)
user = get_user_by_email(email)
is_created = False
if not user:
user_dict = {
"first_name": google_user_data.get("given_name", ""),
"last_name": google_user_data.get("family_name", ""),
"password": None,
}
user = create_user_account(email, **user_dict)
is_created = True
extra_context = {"is_created": is_created}
return user, extra_context
def generate_response_json(self, user, extra_context):
response = AuthUserSerializer(user)
return response.data
NOTE:
AuthUserSerializerused in above ref. could be created as per app's functionality and contain fields which needs to be sent in response of authorization.- Following service methods are used in above code ref. which could be created as per app's functionality:
get_user_by_emailcreate_user_account
Update URLs
from django_google_integrations.apis import GoogleAuthViewSet
default_router = routers.DefaultRouter(trailing_slash=False)
default_router.register("auth/google", GoogleAuthViewSet, basename="google-auth")
Code of Conduct
In order to foster a kind, inclusive, and harassment-free community, we have a code of conduct, which can be found here. We ask you to treat everyone as a smart human programmer that shares an interest in Python and Django Google Integrations with you.
Project details
Release history Release notifications | RSS feed
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 django-google-integrations-0.0.3.tar.gz.
File metadata
- Download URL: django-google-integrations-0.0.3.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29daa4cc0f0a23e2cadd59632f8b7396753510a74227da28515a2d978a94b346
|
|
| MD5 |
8e9b44df32298f8cb8eeb3b67ab8a0a3
|
|
| BLAKE2b-256 |
50396f763e6f51b890bf42b8c2b4cbaeae40a0df9819c8622316c5b90cafe3ae
|
File details
Details for the file django_google_integrations-0.0.3-py3-none-any.whl.
File metadata
- Download URL: django_google_integrations-0.0.3-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f9bffd859a041e9e200ec9b92fbef60157757c3d4d0a1565cb6d2a80dd8fbc9
|
|
| MD5 |
e30581ab9dfb9d74b340b655ec13a02e
|
|
| BLAKE2b-256 |
b32838a3ec7887b9fd5c866f3fe851d6b9365edcf69f9a85b2b521d419ca7d24
|