Skip to main content

Python Social Auth support for Django GraphQL

Project description

Pypi Wheel Build Status Codecov Code Climate

Python Social Auth support for Django GraphQL

Dependencies

  • Python ≥ 3.4

  • Django ≥ 1.11

Installation

Install last stable version from Pypi.

pip install django-graphql-social-auth

See the documentation for further guidance on setting Python Social Auth.

Add the SocialAuth mutation to your GraphQL schema.

import graphene
import graphql_social_auth


class Mutations(graphene.ObjectType):
    social_auth = graphql_social_auth.SocialAuth.Field()

Session authentication via accessToken.

  • provider: provider name from Authentication backend list.

  • accessToken: third-party (Google, Facebook…) OAuth token obtained with any OAuth client.

mutation SocialAuth($provider: String!, $accessToken: String!) {
  socialAuth(provider: $provider, accessToken: $accessToken) {
    social {
      uid
      extraData
    }
  }
}

JSON Web Token (JWT)

Authentication solution based on JSON Web Token.

Install additional requirements.

pip install 'django-graphql-social-auth[jwt]'

Add the SocialAuthJWT mutation to your GraphQL schema.

import graphene
import graphql_social_auth


class Mutations(graphene.ObjectType):
    social_auth = graphql_social_auth.SocialAuthJWT.Field()

Authenticate via accessToken to obtain a JSON Web Token.

mutation SocialAuth($provider: String!, $accessToken: String!) {
  socialAuth(provider: $provider, accessToken: $accessToken) {
    social {
      uid
    }
    token
  }
}

Relay

Complete support for Relay.

import graphene
import graphql_social_auth


class Mutations(graphene.ObjectType):
    social_auth = graphql_social_auth.relay.SocialAuth.Field()

graphql_social_auth.relay.SocialAuthJWT.Field() for JSON Web Token (JWT) authentication.

Relay mutations only accepts one argument named input:

mutation SocialAuth($provider: String!, $accessToken: String!) {
  socialAuth(input:{provider: $provider, accessToken: $accessToken}) {
    social {
      uid
    }
  }
}

Customizing

If you want to customize the SocialAuth behavior, you’ll need to customize the resolve() method on a subclass of SocialAuthMutation or .relay.SocialAuthMutation.

import graphene
import graphql_social_auth


class SocialAuth(graphql_social_auth.SocialAuthMutation):
    user = graphene.Field(UserType)

    @classmethod
    def resolve(cls, root, info, social, **kwargs):
        return cls(user=social.user)

Authenticate via accessToken to obtain the user id.

mutation SocialAuth($provider: String!, $accessToken: String!) {
  socialAuth(provider: $provider, accessToken: $accessToken) {
    social {
      uid
    }
    user {
      id
    }
  }
}

Project template

There is a Django project template to start a demo project.


Gracias @omab / Python Social Auth.

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-graphql-social-auth-0.1.4.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

django_graphql_social_auth-0.1.4-py2.py3-none-any.whl (11.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-graphql-social-auth-0.1.4.tar.gz.

File metadata

File hashes

Hashes for django-graphql-social-auth-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6c774184601555ab4166669d7728ca6804c9cbdcc1c910e08f269ae93bf4dc48
MD5 6401341cc6bf62edb685a69fc7355895
BLAKE2b-256 82dd559a124afff927ca05191008eddfae219f21d068047c3826847f0c88f289

See more details on using hashes here.

File details

Details for the file django_graphql_social_auth-0.1.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_graphql_social_auth-0.1.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a2441043b5e5b3560d9b800cac0dbb39e3893208f5a79bebf8b56a4ca1f12307
MD5 91c27ce5c04c1ad97a35f4d44b1a091c
BLAKE2b-256 25f88ca51c8d900f806d7d2ba58e4d3ddca6704208fd224390eff50a10e30f92

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