Django social authentication with Strawberry using Social Django.
This Library was inspired by Django-graphql-social-auth.
Django Social Auth for Strawberry Graphql engine.
Docs can be found here
- Awesome docs!
- Social Auth
- Profile pic's URL storage in User's model
- Relay Support (Coming Soon...)
pip install strawberry-django-social-auth
- Add this for Avatar support in
settings.py
SOCIAL_AUTH_PIPELINE = [
...
'gql_social_auth.pipeline.get_avatar', # Get Avatar Pipeline
]
- Use built-In Mutation
@strawberry.type
class Mutation:
social_auth = mutations.SocialAuth.field
schema = strawberry.Schema(query=Query, mutation=Mutation)
- Customize the Usage of Mutation using the decorator
from gql_social_auth.decorators import social_auth
from gql_social_auth.types import SocialAuthInput
@strawberry.type
class CustomMutation:
@strawberry.mutation
@social_auth
def social_auth(self, info: Info, _input: SocialAuthInput, user, errors) -> CustomReturnType:
# user: User object from model
# errors: If any errors occurred during the process of getting the social auth
# Note: Any of the user or errors is None at a time, both can't be None at the same time...
if errors is not None:
# Handle Error here
# Use user Object here...
mutation SocialAuth($provider: String!, $accessToken: String!){
socialAuth(provider: $provider, accessToken: $accessToken){
uid
avatar
extraData
errors
success
refreshToken {
created
isExpired
expiresAt
token
revoked
}
token {
token
payload {
exp
origIat
}
}
user {
email
archived
dateJoined
firstName
isActive
id
isStaff
isSuperuser
lastLogin
lastName
logentrySet {
pk
}
status {
archived
verified
}
verified
}
}
}
See CONTRIBUTING.md