Skip to main content

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-url which redirects user to Google's Authorization Server to request consent from resource owner.
    • 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.

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

Generate Google Client Config

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:

  • AuthUserSerializer used 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_email
    • create_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-google-integrations-0.0.3.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

django_google_integrations-0.0.3-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file django-google-integrations-0.0.3.tar.gz.

File metadata

File hashes

Hashes for django-google-integrations-0.0.3.tar.gz
Algorithm Hash digest
SHA256 29daa4cc0f0a23e2cadd59632f8b7396753510a74227da28515a2d978a94b346
MD5 8e9b44df32298f8cb8eeb3b67ab8a0a3
BLAKE2b-256 50396f763e6f51b890bf42b8c2b4cbaeae40a0df9819c8622316c5b90cafe3ae

See more details on using hashes here.

File details

Details for the file django_google_integrations-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_google_integrations-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9f9bffd859a041e9e200ec9b92fbef60157757c3d4d0a1565cb6d2a80dd8fbc9
MD5 e30581ab9dfb9d74b340b655ec13a02e
BLAKE2b-256 b32838a3ec7887b9fd5c866f3fe851d6b9365edcf69f9a85b2b521d419ca7d24

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page