<a id="api-reference"></a>

# API Reference

This reference covers the main extension points provided by `social-auth-core`.
The generated pages include links to the corresponding source code.

<a id="module-social_core.backends.base"></a>

<a id="authentication-backends"></a>

## Authentication backends

<a id="social_core.backends.base.BaseAuth"></a>

### *class* social_core.backends.base.BaseAuth(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

A authentication backend that authenticates the user based on
the provider response.

Set `ASSOCIATION_ONLY` to connect provider access to an authenticated local
user without updating their profile. Browser flows must start through
`do_auth(user=...)` and validate callbacks with
`validate_association_state()` before processing provider credentials.
Authentication and disconnect partials remain bound to that local user.

<a id="social_core.backends.base.BaseAuth.ASSOCIATION_ONLY"></a>

#### ASSOCIATION_ONLY *= False*

<a id="social_core.backends.base.BaseAuth.EXTRA_DATA"></a>

#### EXTRA_DATA *: [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str) | [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str), [bool](https://docs.python.org/3/builtins/functions.html#bool)]] | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.base.BaseAuth.GET_ALL_EXTRA_DATA"></a>

#### GET_ALL_EXTRA_DATA *= False*

<a id="social_core.backends.base.BaseAuth.ID_KEY"></a>

#### ID_KEY *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)* *= ''*

<a id="social_core.backends.base.BaseAuth.LEGACY_ID_KEYS"></a>

#### LEGACY_ID_KEYS *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), ...]* *= ()*

<a id="social_core.backends.base.BaseAuth.MUTABLE_ID_KEYS"></a>

#### MUTABLE_ID_KEYS *: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), ...]* *= ()*

<a id="social_core.backends.base.BaseAuth.REQUIRES_EMAIL_VALIDATION"></a>

#### REQUIRES_EMAIL_VALIDATION *= False*

<a id="social_core.backends.base.BaseAuth.REQUIRES_USER_ID"></a>

#### REQUIRES_USER_ID *: [bool](https://docs.python.org/3/builtins/functions.html#bool)* *= False*

<a id="social_core.backends.base.BaseAuth.SEND_USER_AGENT"></a>

#### SEND_USER_AGENT *= True*

<a id="social_core.backends.base.BaseAuth.association_user_id_key"></a>

#### association_user_id_key(pipeline_type: [str](https://docs.python.org/3/builtins/stdtypes.html#str) = 'authentication') → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Name of the initiator binding saved in pipeline arguments.

<a id="social_core.backends.base.BaseAuth.auth_allowed"></a>

#### auth_allowed(response, details)

Return True if the user should be allowed to authenticate, by
default check if email is whitelisted (if there’s a whitelist)

<a id="social_core.backends.base.BaseAuth.auth_complete"></a>

#### auth_complete(\*args, \*\*kwargs) → [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

Completes login process, must return user instance

<a id="social_core.backends.base.BaseAuth.auth_extra_arguments"></a>

#### auth_extra_arguments() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return extra arguments needed on auth process.

Configured AUTH_EXTRA_ARGUMENTS are not overridden by request data by
default. Set AUTH_EXTRA_ARGUMENTS_OVERRIDE_ALLOWLIST to an iterable of
configured extra-argument keys that may be replaced by matching request
data values.

<a id="social_core.backends.base.BaseAuth.auth_html"></a>

#### auth_html() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Must return login HTML content returned by provider

<a id="social_core.backends.base.BaseAuth.auth_url"></a>

#### auth_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Must return redirect URL to auth provider

<a id="social_core.backends.base.BaseAuth.authenticate"></a>

#### authenticate(\*args, \*\*kwargs) → [UserProtocol](#social_core.storage.UserProtocol) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

Authenticate user using social credentials

Authentication is made if this is the correct backend, backend
verification is made by kwargs inspection for current backend
name presence.

<a id="social_core.backends.base.BaseAuth.complete"></a>

#### complete(\*args, \*\*kwargs) → [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.base.BaseAuth.continue_disconnect_pipeline"></a>

#### continue_disconnect_pipeline(partial: [PartialMixin](#social_core.storage.PartialMixin)) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol)

Continue a halted disconnect with its effective request data.

<a id="social_core.backends.base.BaseAuth.continue_pipeline"></a>

#### continue_pipeline(partial: [PartialMixin](#social_core.storage.PartialMixin)) → [UserProtocol](#social_core.storage.UserProtocol) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

Continue previous halted pipeline

<a id="social_core.backends.base.BaseAuth.disconnect"></a>

#### disconnect(\*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)

<a id="social_core.backends.base.BaseAuth.extra_data"></a>

#### extra_data(user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None), uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), response: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any], details: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any], pipeline_kwargs: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any]) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any]

Return default extra data to store in extra_data field

<a id="social_core.backends.base.BaseAuth.get_association_state"></a>

#### get_association_state() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return the token from a prepared, user-bound authorization context.

<a id="social_core.backends.base.BaseAuth.get_group_mappings"></a>

#### get_group_mappings()

Enumerate independently managed membership sources.

<a id="social_core.backends.base.BaseAuth.get_group_setting"></a>

#### get_group_setting(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), response, default=None)

Resolve group configuration for this provider (or a SAML IdP).

<a id="social_core.backends.base.BaseAuth.get_group_source"></a>

#### get_group_source(response) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Identify the provider’s active membership source.

<a id="social_core.backends.base.BaseAuth.get_json"></a>

#### get_json(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), method: Literal['GET', 'POST', 'DELETE'] = 'GET', headers: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, json: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, auth: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | AuthBase | [None](https://docs.python.org/3/builtins/constants.html#None) = None, params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, timeout: [float](https://docs.python.org/3/builtins/functions.html#float) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'user_info') → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[Any, Any]

<a id="social_core.backends.base.BaseAuth.get_key_and_secret"></a>

#### get_key_and_secret() → [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return tuple with Consumer Key and Consumer Secret for current
service provider. Must return (key, secret), order *must* be respected.

<a id="social_core.backends.base.BaseAuth.get_key_and_secret_basic_auth"></a>

#### get_key_and_secret_basic_auth() → [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)

Generate HTTP Basic Authentication header value from KEY and SECRET.

Returns:
: Basic authentication value in the format b”Basic <base64-encoded-credentials>”

<a id="social_core.backends.base.BaseAuth.get_legacy_user_ids"></a>

#### get_legacy_user_ids(details, response) → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return current values of identifiers used by older releases.

<a id="social_core.backends.base.BaseAuth.get_querystring"></a>

#### get_querystring(url, \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.backends.base.BaseAuth.get_refresh_token"></a>

#### get_refresh_token(extra_data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)

Select a stored renewal credential, or None when renewal is unavailable.

Backends that exchange an access token should override this method.

<a id="social_core.backends.base.BaseAuth.get_refresh_token_kwargs"></a>

#### get_refresh_token_kwargs(extra_data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return default refresh arguments from stored account credentials.

<a id="social_core.backends.base.BaseAuth.get_user"></a>

#### get_user(user_id)

Return user with given ID from the User model used by this backend.
This is called by django.contrib.auth.middleware.

<a id="social_core.backends.base.BaseAuth.get_user_details"></a>

#### get_user_details(response) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return provider-supplied user details in a known internal structure.

Leave name conversion to the social_names pipeline step.

The returned dictionary can contain:

`username`
: Username, if any.

`email`
: User email, if any.

`fullname`
: User full name, if any.

`first_name`
: User first name, if any.

`last_name`
: User last name, if any.

<a id="social_core.backends.base.BaseAuth.get_user_groups"></a>

#### get_user_groups(response) → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Return normalized external memberships, or None when disabled.

<a id="social_core.backends.base.BaseAuth.get_user_id"></a>

#### get_user_id(details, response)

Return a unique ID for the current user, by default from server
response or details.

<a id="social_core.backends.base.BaseAuth.get_user_id_for_key"></a>

#### get_user_id_for_key(details, response, id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Return a user identifier selected by an explicit response key.

<a id="social_core.backends.base.BaseAuth.get_user_id_from_sources"></a>

#### get_user_id_from_sources(\*sources: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None), id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Return the selected user ID from mappings or fail clearly.

Sources are searched in order for the configured or explicitly passed
ID key. Missing, `None`, and empty-string values are rejected.

<a id="social_core.backends.base.BaseAuth.get_user_names"></a>

#### get_user_names(fullname='', first_name='', last_name='')

<a id="social_core.backends.base.BaseAuth.icon"></a>

#### icon *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.base.BaseAuth.id_key"></a>

#### id_key() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return the ID_KEY to use for this backend, checking settings first.

<a id="social_core.backends.base.BaseAuth.log_debug"></a>

#### log_debug(message, \*args) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.base.BaseAuth.log_warning"></a>

#### log_warning(message, \*args) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.base.BaseAuth.name"></a>

#### name *= ''*

<a id="social_core.backends.base.BaseAuth.pipeline"></a>

#### pipeline(pipeline, pipeline_index: [int](https://docs.python.org/3/builtins/functions.html#int) = 0, \*args, \*\*kwargs) → [UserProtocol](#social_core.storage.UserProtocol) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.base.BaseAuth.pipeline_type"></a>

#### *property* pipeline_type *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

Type of the currently executing pipeline, saved with its partials.

<a id="social_core.backends.base.BaseAuth.prepare_auth"></a>

#### prepare_auth(user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [None](https://docs.python.org/3/builtins/constants.html#None)

Bind association-only authorization to an authenticated local user.

<a id="social_core.backends.base.BaseAuth.process_error"></a>

#### process_error(data, , stage: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown'] = 'callback') → [None](https://docs.python.org/3/builtins/constants.html#None)

Hook to process provider response errors.

Default implementation is a no-op. Backends that can detect
provider-specific error payloads should override this method and
raise an appropriate exception when needed.

<a id="social_core.backends.base.BaseAuth.request"></a>

#### request(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), , method: Literal['GET', 'POST', 'DELETE'] = 'GET', headers: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, json: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, auth: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | AuthBase | [None](https://docs.python.org/3/builtins/constants.html#None) = None, params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, timeout: [float](https://docs.python.org/3/builtins/functions.html#float) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'user_info') → Response

<a id="social_core.backends.base.BaseAuth.require_association_user"></a>

#### require_association_user(user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None), , stage: ErrorStage = 'user_info') → [UserProtocol](#social_core.storage.UserProtocol)

Require an authenticated local user for an association-only flow.

<a id="social_core.backends.base.BaseAuth.run_pipeline"></a>

#### run_pipeline(pipeline: [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)], pipeline_index=0, \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)

<a id="social_core.backends.base.BaseAuth.setting"></a>

#### setting(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), default=None)

Return setting value from strategy

<a id="social_core.backends.base.BaseAuth.start"></a>

#### start() → [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol)

<a id="social_core.backends.base.BaseAuth.supports_inactive_user"></a>

#### supports_inactive_user *= False*

<a id="social_core.backends.base.BaseAuth.title"></a>

#### title *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.base.BaseAuth.uses_redirect"></a>

#### uses_redirect() → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Return True if this provider uses redirect url method,
otherwise return false.

<a id="social_core.backends.base.BaseAuth.validate_association_state"></a>

#### validate_association_state(request_state: Any, user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Validate and consume authorization state bound to the current user.

<a id="social_core.backends.base.BaseAuth.validate_partial_pipeline"></a>

#### validate_partial_pipeline(partial: [PartialMixin](#social_core.storage.PartialMixin), user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [None](https://docs.python.org/3/builtins/constants.html#None)

Validate backend-specific requirements before resuming a pipeline.

<a id="module-social_core.backends.oauth"></a>

<a id="social_core.backends.oauth.BaseOAuth1"></a>

### *class* social_core.backends.oauth.BaseOAuth1(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`OAuthAuth`](#social_core.backends.oauth.OAuthAuth)

Consumer based mechanism OAuth authentication, fill the needed
parameters to communicate properly with authentication service.

URLs settings:
: REQUEST_TOKEN_URL       Request token URL

<a id="social_core.backends.oauth.BaseOAuth1.OAUTH_TOKEN_PARAMETER_NAME"></a>

#### OAUTH_TOKEN_PARAMETER_NAME *= 'oauth_token'*

<a id="social_core.backends.oauth.BaseOAuth1.REDIRECT_URI_PARAMETER_NAME"></a>

#### REDIRECT_URI_PARAMETER_NAME *= 'redirect_uri'*

<a id="social_core.backends.oauth.BaseOAuth1.REQUEST_TOKEN_METHOD"></a>

#### REQUEST_TOKEN_METHOD *: Literal['GET', 'POST']* *= 'GET'*

<a id="social_core.backends.oauth.BaseOAuth1.REQUEST_TOKEN_URL"></a>

#### REQUEST_TOKEN_URL *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)* *= ''*

<a id="social_core.backends.oauth.BaseOAuth1.UNATHORIZED_TOKEN_SUFIX"></a>

#### UNATHORIZED_TOKEN_SUFIX *= 'unauthorized_token_name'*

<a id="social_core.backends.oauth.BaseOAuth1.access_token"></a>

#### access_token(token: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return request for access token value

<a id="social_core.backends.oauth.BaseOAuth1.auth_complete"></a>

#### auth_complete(\*args, \*\*kwargs)

Return user, might be logged in

<a id="social_core.backends.oauth.BaseOAuth1.auth_url"></a>

#### auth_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return redirect url

<a id="social_core.backends.oauth.BaseOAuth1.do_auth"></a>

#### do_auth(access_token, \*args, \*\*kwargs)

Finish the auth process once the access_token was retrieved

<a id="social_core.backends.oauth.BaseOAuth1.get_unauthorized_token"></a>

#### get_unauthorized_token()

<a id="social_core.backends.oauth.BaseOAuth1.oauth_auth"></a>

#### oauth_auth(token: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, oauth_verifier=None, signature_type='AUTH_HEADER', , stage: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown'] = 'callback')

<a id="social_core.backends.oauth.BaseOAuth1.oauth_authorization_request"></a>

#### oauth_authorization_request(token)

Generate OAuth request to authorize token.

<a id="social_core.backends.oauth.BaseOAuth1.oauth_request"></a>

#### oauth_request(token: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict), url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), params=None, method: Literal['GET', 'POST'] = 'GET') → Response

Generate OAuth request, setups callback url

<a id="social_core.backends.oauth.BaseOAuth1.process_error"></a>

#### process_error(data, , stage: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown'] = 'callback') → [None](https://docs.python.org/3/builtins/constants.html#None)

Hook to process provider response errors.

Default implementation is a no-op. Backends that can detect
provider-specific error payloads should override this method and
raise an appropriate exception when needed.

<a id="social_core.backends.oauth.BaseOAuth1.request_token_extra_arguments"></a>

#### request_token_extra_arguments() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return extra arguments needed on request-token process

<a id="social_core.backends.oauth.BaseOAuth1.set_unauthorized_token"></a>

#### set_unauthorized_token()

<a id="social_core.backends.oauth.BaseOAuth1.unauthorized_token"></a>

#### unauthorized_token()

Return request for unauthorized token (first stage)

<a id="social_core.backends.oauth.BaseOAuth1.user_data"></a>

#### user_data(access_token: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict), \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Loads user data from service. Implement in subclass

<a id="social_core.backends.oauth.BaseOAuth2"></a>

### *class* social_core.backends.oauth.BaseOAuth2(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`OAuthAuth`](#social_core.backends.oauth.OAuthAuth)

Base class for OAuth2 providers.

OAuth2 details at:
: [https://datatracker.ietf.org/doc/html/rfc6749](https://datatracker.ietf.org/doc/html/rfc6749)

<a id="social_core.backends.oauth.BaseOAuth2.REDIRECT_STATE"></a>

#### REDIRECT_STATE *= True*

<a id="social_core.backends.oauth.BaseOAuth2.REFRESH_TOKEN_METHOD"></a>

#### REFRESH_TOKEN_METHOD *: Literal['GET', 'POST', 'DELETE']* *= 'POST'*

<a id="social_core.backends.oauth.BaseOAuth2.REFRESH_TOKEN_URL"></a>

#### REFRESH_TOKEN_URL *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.oauth.BaseOAuth2.RESPONSE_TYPE"></a>

#### RESPONSE_TYPE *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= 'code'*

<a id="social_core.backends.oauth.BaseOAuth2.STATE_PARAMETER"></a>

#### STATE_PARAMETER *= True*

<a id="social_core.backends.oauth.BaseOAuth2.USE_BASIC_AUTH"></a>

#### USE_BASIC_AUTH *= False*

<a id="social_core.backends.oauth.BaseOAuth2.auth_complete"></a>

#### auth_complete(\*args, \*\*kwargs)

Completes login process, must return user instance

<a id="social_core.backends.oauth.BaseOAuth2.auth_complete_credentials"></a>

#### auth_complete_credentials()

<a id="social_core.backends.oauth.BaseOAuth2.auth_complete_params"></a>

#### auth_complete_params(state=None)

<a id="social_core.backends.oauth.BaseOAuth2.auth_headers"></a>

#### auth_headers() → Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)]

<a id="social_core.backends.oauth.BaseOAuth2.auth_params"></a>

#### auth_params(state: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.backends.oauth.BaseOAuth2.auth_url"></a>

#### auth_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return redirect url

<a id="social_core.backends.oauth.BaseOAuth2.do_auth"></a>

#### do_auth(access_token, \*args, \*\*kwargs)

Finish the auth process once the access_token was retrieved

<a id="social_core.backends.oauth.BaseOAuth2.extra_data"></a>

#### extra_data(user, uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), response: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], details: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], pipeline_kwargs: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return access_token, token_type, and extra defined names to store in
extra_data field

<a id="social_core.backends.oauth.BaseOAuth2.get_access_token"></a>

#### get_access_token(response: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Extract a usable access token before profile lookup or pipeline execution.

<a id="social_core.backends.oauth.BaseOAuth2.process_error"></a>

#### process_error(data, , stage: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown'] = 'callback') → [None](https://docs.python.org/3/builtins/constants.html#None)

Hook to process provider response errors.

Default implementation is a no-op. Backends that can detect
provider-specific error payloads should override this method and
raise an appropriate exception when needed.

<a id="social_core.backends.oauth.BaseOAuth2.process_refresh_token_response"></a>

#### process_refresh_token_response(response, \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)

<a id="social_core.backends.oauth.BaseOAuth2.refresh_token"></a>

#### refresh_token(token: [str](https://docs.python.org/3/builtins/stdtypes.html#str), \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)

<a id="social_core.backends.oauth.BaseOAuth2.refresh_token_auth"></a>

#### refresh_token_auth() → AuthBase | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.oauth.BaseOAuth2.refresh_token_params"></a>

#### refresh_token_params(token: [str](https://docs.python.org/3/builtins/stdtypes.html#str), \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.backends.oauth.BaseOAuth2.refresh_token_url"></a>

#### refresh_token_url()

<a id="social_core.backends.oauth.BaseOAuth2.request_access_token"></a>

#### request_access_token(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), method: Literal['GET', 'POST', 'DELETE'] = 'GET', headers: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, json: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, auth: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | AuthBase | [None](https://docs.python.org/3/builtins/constants.html#None) = None, params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, , stage: ErrorStage = 'token_exchange') → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[Any, Any]

<a id="social_core.backends.oauth.BaseOAuth2.use_basic_auth"></a>

#### use_basic_auth() → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.backends.oauth.BaseOAuth2.user_data"></a>

#### user_data(access_token: [str](https://docs.python.org/3/builtins/stdtypes.html#str), \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Loads user data from service. Implement in subclass

<a id="social_core.backends.oauth.BaseOAuth2PKCE"></a>

### *class* social_core.backends.oauth.BaseOAuth2PKCE(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`BaseOAuth2`](#social_core.backends.oauth.BaseOAuth2)

Base class for providers using OAuth2 with Proof Key for Code Exchange (PKCE).

OAuth2 details at:
: [https://datatracker.ietf.org/doc/html/rfc6749](https://datatracker.ietf.org/doc/html/rfc6749)

PKCE details at:
: [https://datatracker.ietf.org/doc/html/rfc7636](https://datatracker.ietf.org/doc/html/rfc7636)

<a id="social_core.backends.oauth.BaseOAuth2PKCE.DEFAULT_USE_PKCE"></a>

#### DEFAULT_USE_PKCE *= True*

<a id="social_core.backends.oauth.BaseOAuth2PKCE.PKCE_DEFAULT_CODE_CHALLENGE_METHOD"></a>

#### PKCE_DEFAULT_CODE_CHALLENGE_METHOD *= 'S256'*

<a id="social_core.backends.oauth.BaseOAuth2PKCE.PKCE_DEFAULT_CODE_VERIFIER_LENGTH"></a>

#### PKCE_DEFAULT_CODE_VERIFIER_LENGTH *= 43*

<a id="social_core.backends.oauth.BaseOAuth2PKCE.auth_complete_params"></a>

#### auth_complete_params(state=None)

<a id="social_core.backends.oauth.BaseOAuth2PKCE.auth_params"></a>

#### auth_params(state=None)

<a id="social_core.backends.oauth.BaseOAuth2PKCE.create_code_verifier"></a>

#### create_code_verifier()

<a id="social_core.backends.oauth.BaseOAuth2PKCE.generate_code_challenge"></a>

#### generate_code_challenge(code_verifier, challenge_method)

<a id="social_core.backends.oauth.BaseOAuth2PKCE.get_code_verifier"></a>

#### get_code_verifier()

<a id="social_core.backends.oauth.OAuthAuth"></a>

### *class* social_core.backends.oauth.OAuthAuth(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`BaseAuth`](#social_core.backends.base.BaseAuth)

OAuth authentication backend base class.

Settings will be inspected to get more values names that should be
stored on extra_data field. The setting name is created following the
pattern SOCIAL_AUTH_<uppercase current backend name>_EXTRA_DATA.

access_token is always stored.

URLs settings:
: AUTHORIZATION_URL       Authorization service url
  ACCESS_TOKEN_URL        Access token URL

<a id="social_core.backends.oauth.OAuthAuth.ACCESS_TOKEN_METHOD"></a>

#### ACCESS_TOKEN_METHOD *: Literal['GET', 'POST']* *= 'POST'*

<a id="social_core.backends.oauth.OAuthAuth.ACCESS_TOKEN_PAYLOAD"></a>

#### ACCESS_TOKEN_PAYLOAD *: Literal['form', 'json']* *= 'form'*

<a id="social_core.backends.oauth.OAuthAuth.ACCESS_TOKEN_URL"></a>

#### ACCESS_TOKEN_URL *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)* *= ''*

<a id="social_core.backends.oauth.OAuthAuth.AUTHORIZATION_URL"></a>

#### AUTHORIZATION_URL *= ''*

<a id="social_core.backends.oauth.OAuthAuth.DEFAULT_SCOPE"></a>

#### DEFAULT_SCOPE *: [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.oauth.OAuthAuth.ID_KEY"></a>

#### ID_KEY *= 'id'*

<a id="social_core.backends.oauth.OAuthAuth.REDIRECT_STATE"></a>

#### REDIRECT_STATE *= False*

<a id="social_core.backends.oauth.OAuthAuth.REVOKE_TOKEN_METHOD"></a>

#### REVOKE_TOKEN_METHOD *: Literal['GET', 'POST', 'DELETE']* *= 'POST'*

<a id="social_core.backends.oauth.OAuthAuth.REVOKE_TOKEN_URL"></a>

#### REVOKE_TOKEN_URL *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)* *= ''*

<a id="social_core.backends.oauth.OAuthAuth.SCOPE_PARAMETER_NAME"></a>

#### SCOPE_PARAMETER_NAME *= 'scope'*

<a id="social_core.backends.oauth.OAuthAuth.SCOPE_SEPARATOR"></a>

#### SCOPE_SEPARATOR *= ' '*

<a id="social_core.backends.oauth.OAuthAuth.STATE_PARAMETER"></a>

#### STATE_PARAMETER *= False*

<a id="social_core.backends.oauth.OAuthAuth.access_token_url"></a>

#### access_token_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.oauth.OAuthAuth.authorization_url"></a>

#### authorization_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.oauth.OAuthAuth.extra_data"></a>

#### extra_data(user, uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), response: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], details: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], pipeline_kwargs: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return access_token and extra defined names to store in
extra_data field

<a id="social_core.backends.oauth.OAuthAuth.get_access_token_url_format"></a>

#### get_access_token_url_format() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.backends.oauth.OAuthAuth.get_authorization_url_format"></a>

#### get_authorization_url_format() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.backends.oauth.OAuthAuth.get_or_create_state"></a>

#### get_or_create_state() → [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.oauth.OAuthAuth.get_redirect_uri"></a>

#### get_redirect_uri(state: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Build redirect with redirect_state parameter.

<a id="social_core.backends.oauth.OAuthAuth.get_request_state"></a>

#### get_request_state()

<a id="social_core.backends.oauth.OAuthAuth.get_scope"></a>

#### get_scope() → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return list with needed access scope

<a id="social_core.backends.oauth.OAuthAuth.get_scope_argument"></a>

#### get_scope_argument()

<a id="social_core.backends.oauth.OAuthAuth.get_session_state"></a>

#### get_session_state()

<a id="social_core.backends.oauth.OAuthAuth.process_revoke_token_response"></a>

#### process_revoke_token_response(response)

<a id="social_core.backends.oauth.OAuthAuth.revoke_token"></a>

#### revoke_token(token, uid)

<a id="social_core.backends.oauth.OAuthAuth.revoke_token_headers"></a>

#### revoke_token_headers(token, uid) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

<a id="social_core.backends.oauth.OAuthAuth.revoke_token_params"></a>

#### revoke_token_params(token, uid) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

<a id="social_core.backends.oauth.OAuthAuth.revoke_token_url"></a>

#### revoke_token_url(token, uid) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.oauth.OAuthAuth.state_token"></a>

#### state_token()

Generate csrf token to include as state parameter.

<a id="social_core.backends.oauth.OAuthAuth.user_data"></a>

#### user_data(access_token, \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Loads user data from service. Implement in subclass

<a id="social_core.backends.oauth.OAuthAuth.validate_state"></a>

#### validate_state()

Validate state value. Raises exception on error, returns state
value if valid.

<a id="module-social_core.backends.open_id"></a>

<a id="social_core.backends.open_id.OpenIdAuth"></a>

### *class* social_core.backends.open_id.OpenIdAuth(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`BaseAuth`](#social_core.backends.base.BaseAuth)

Generic OpenID authentication backend

<a id="social_core.backends.open_id.OpenIdAuth.PROTOCOL_ID_KEY"></a>

#### PROTOCOL_ID_KEY *= 'identity_url'*

<a id="social_core.backends.open_id.OpenIdAuth.URL"></a>

#### URL *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id.OpenIdAuth.USERNAME_KEY"></a>

#### USERNAME_KEY *= 'username'*

<a id="social_core.backends.open_id.OpenIdAuth.auth_complete"></a>

#### auth_complete(\*args, \*\*kwargs)

Complete auth process

<a id="social_core.backends.open_id.OpenIdAuth.auth_html"></a>

#### auth_html()

Return auth HTML returned by service

<a id="social_core.backends.open_id.OpenIdAuth.auth_url"></a>

#### auth_url()

Return auth URL returned by service

<a id="social_core.backends.open_id.OpenIdAuth.consumer"></a>

#### consumer()

Create an OpenID Consumer object for the given Django request.

<a id="social_core.backends.open_id.OpenIdAuth.continue_pipeline"></a>

#### continue_pipeline(partial)

Continue previous halted pipeline

<a id="social_core.backends.open_id.OpenIdAuth.create_consumer"></a>

#### create_consumer(store=None)

<a id="social_core.backends.open_id.OpenIdAuth.extra_data"></a>

#### extra_data(user, uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), response: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], details: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], pipeline_kwargs: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return defined extra data names to store in extra_data field.
Settings will be inspected to get more values names that should be
stored on extra_data field. Setting name is created from current
backend name (all uppercase) plus \_SREG_EXTRA_DATA and
\_AX_EXTRA_DATA because values can be returned by SimpleRegistration
or AttributeExchange schemas.

Both list must be a value name and an alias mapping similar to
SREG_ATTR, OLD_AX_ATTRS or AX_SCHEMA_ATTRS

<a id="social_core.backends.open_id.OpenIdAuth.get_ax_attributes"></a>

#### get_ax_attributes() → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]]

<a id="social_core.backends.open_id.OpenIdAuth.get_consumer_store"></a>

#### get_consumer_store() → OpenIdStore | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.open_id.OpenIdAuth.get_return_to"></a>

#### get_return_to() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id.OpenIdAuth.get_sreg_attributes"></a>

#### get_sreg_attributes()

<a id="social_core.backends.open_id.OpenIdAuth.get_user_details"></a>

#### get_user_details(response)

Return user details from an OpenID request

<a id="social_core.backends.open_id.OpenIdAuth.get_user_id"></a>

#### get_user_id(details, response)

Return the protocol-defined identity URL provided by the service.

OpenID identity is asserted as a URL rather than a response mapping field,
so the configurable ID_KEY does not apply to this backend.

<a id="social_core.backends.open_id.OpenIdAuth.get_user_id_for_key"></a>

#### get_user_id_for_key(details, response, id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Return the asserted identity URL or an explicitly selected profile field.

<a id="social_core.backends.open_id.OpenIdAuth.name"></a>

#### name *= 'openid'*

<a id="social_core.backends.open_id.OpenIdAuth.openid_request"></a>

#### openid_request(params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Return openid request

<a id="social_core.backends.open_id.OpenIdAuth.openid_url"></a>

#### openid_url()

Return service provider URL.
This base class is generic accepting a POST parameter that specifies
provider URL.

<a id="social_core.backends.open_id.OpenIdAuth.process_error"></a>

#### process_error(data, , stage: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown'] = 'callback') → [None](https://docs.python.org/3/builtins/constants.html#None)

Hook to process provider response errors.

Default implementation is a no-op. Backends that can detect
provider-specific error payloads should override this method and
raise an appropriate exception when needed.

<a id="social_core.backends.open_id.OpenIdAuth.setup_request"></a>

#### setup_request(params=None)

Setup request

<a id="social_core.backends.open_id.OpenIdAuth.title"></a>

#### title *= 'OpenID'*

<a id="social_core.backends.open_id.OpenIdAuth.trust_root"></a>

#### trust_root()

Return trust-root option

<a id="social_core.backends.open_id.OpenIdAuth.uses_redirect"></a>

#### uses_redirect()

Return true if openid request will be handled with redirect or
HTML content will be returned.

<a id="social_core.backends.open_id.OpenIdAuth.values_from_response"></a>

#### values_from_response(response, sreg_names=None, ax_names=None)

Return values from SimpleRegistration response or
AttributeExchange response if present.

@sreg_names and @ax_names must be a list of name and aliases
for such name. The alias will be used as mapping key.

<a id="module-social_core.backends.open_id_connect"></a>

<a id="social_core.backends.open_id_connect.OpenIdConnectAssociation"></a>

### *class* social_core.backends.open_id_connect.OpenIdConnectAssociation(handle, secret='', issued=0, lifetime=0, assoc_type='')

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

Use Association model to save the nonce by force.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth"></a>

### *class* social_core.backends.open_id_connect.OpenIdConnectAuth(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`BaseOAuth2PKCE`](#social_core.backends.oauth.BaseOAuth2PKCE)

Base class for Open ID Connect backends.
Currently only the code response type is supported.

It can also be directly instantiated as a generic OIDC backend.
To use it you will need to set at minimum:

SOCIAL_AUTH_OIDC_OIDC_ENDPOINT = ‘[https://](https://)…..’  # endpoint without /.well-known/openid-configuration
SOCIAL_AUTH_OIDC_KEY = ‘<client_id>’
SOCIAL_AUTH_OIDC_SECRET = ‘<client_secret>’
SOCIAL_AUTH_OIDC_USE_PKCE = True  # optional, enables PKCE for this backend

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.ACCESS_TOKEN_URL"></a>

#### ACCESS_TOKEN_URL *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.ACR_VALUES"></a>

#### ACR_VALUES *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.AUTHORIZATION_URL"></a>

#### AUTHORIZATION_URL *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.CUSTOM_AT_HASH_ALGO"></a>

#### CUSTOM_AT_HASH_ALGO *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.DEFAULT_SCOPE"></a>

#### DEFAULT_SCOPE *= ['openid', 'profile', 'email']*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.DEFAULT_USE_PKCE"></a>

#### DEFAULT_USE_PKCE *= False*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.DISPLAY"></a>

#### DISPLAY *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.EMAIL_KEY"></a>

#### EMAIL_KEY *= 'email'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.EXTRA_DATA"></a>

#### EXTRA_DATA *= ['id_token', 'refresh_token', ('sub', 'id')]*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.FIRST_NAME_KEY"></a>

#### FIRST_NAME_KEY *= 'given_name'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.FULLNAME_KEY"></a>

#### FULLNAME_KEY *= 'name'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.ID_KEY"></a>

#### ID_KEY *= 'sub'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.ID_TOKEN_HINT"></a>

#### ID_TOKEN_HINT *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.ID_TOKEN_ISSUER"></a>

#### ID_TOKEN_ISSUER *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.ID_TOKEN_MAX_AGE"></a>

#### ID_TOKEN_MAX_AGE *= 600*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.JWKS_URI"></a>

#### JWKS_URI *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.JWT_ALGORITHMS"></a>

#### JWT_ALGORITHMS *= ['RS256']*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.JWT_DECODE_OPTIONS"></a>

#### JWT_DECODE_OPTIONS *: Options* *= {}*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.JWT_LEEWAY"></a>

#### JWT_LEEWAY *: [float](https://docs.python.org/3/builtins/functions.html#float)* *= 1.0*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.LAST_NAME_KEY"></a>

#### LAST_NAME_KEY *= 'family_name'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.LOGIN_HINT"></a>

#### LOGIN_HINT *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.MAX_AGE"></a>

#### MAX_AGE *: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.NONCE_LIFETIME"></a>

#### NONCE_LIFETIME *= 1800*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.OIDC_ENDPOINT"></a>

#### OIDC_ENDPOINT *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.PKCE_DEFAULT_CODE_CHALLENGE_METHOD"></a>

#### PKCE_DEFAULT_CODE_CHALLENGE_METHOD *= 'S256'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.PROMPT"></a>

#### PROMPT *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.REDIRECT_STATE"></a>

#### REDIRECT_STATE *= False*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.REVOKE_TOKEN_METHOD"></a>

#### REVOKE_TOKEN_METHOD *: Literal['GET', 'POST', 'DELETE']* *= 'GET'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.REVOKE_TOKEN_URL"></a>

#### REVOKE_TOKEN_URL *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.TOKEN_ENDPOINT_AUTH_METHOD"></a>

#### TOKEN_ENDPOINT_AUTH_METHOD *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.UI_LOCALES"></a>

#### UI_LOCALES *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.USERINFO_URL"></a>

#### USERINFO_URL *= ''*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.USERNAME_KEY"></a>

#### USERNAME_KEY *= 'preferred_username'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.USE_NONCE"></a>

#### USE_NONCE *= True*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.VALIDATE_AT_HASH"></a>

#### VALIDATE_AT_HASH *: [bool](https://docs.python.org/3/builtins/functions.html#bool)* *= True*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.access_token_url"></a>

#### access_token_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.auth_params"></a>

#### auth_params(state=None)

Return extra arguments needed on auth process.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.authorization_url"></a>

#### authorization_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.calc_at_hash"></a>

#### *static* calc_at_hash(access_token, algorithm, custom_at_hash_algo: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Calculates “at_hash” claim which is not done by pyjwt.
Custom “at_hash” algorithm is used for non-standard token.

See [https://pyjwt.readthedocs.io/en/stable/usage.html#oidc-login-flow](https://pyjwt.readthedocs.io/en/stable/usage.html#oidc-login-flow)
See [https://github.com/python-social-auth/social-core/issues/1306](https://github.com/python-social-auth/social-core/issues/1306)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.continue_pipeline"></a>

#### continue_pipeline(partial: [PartialMixin](#social_core.storage.PartialMixin)) → [UserProtocol](#social_core.storage.UserProtocol) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

Continue previous halted pipeline

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.decode_and_validate_id_token"></a>

#### decode_and_validate_id_token(id_token, access_token)

Validate an ID token’s signature and self-contained claims.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.extra_data"></a>

#### extra_data(user, uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), response: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], details: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], pipeline_kwargs: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return access_token, token_type, and extra defined names to store in
extra_data field

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.find_valid_key"></a>

#### find_valid_key(id_token)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_and_store_nonce"></a>

#### get_and_store_nonce(url, state)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_jwks_keys"></a>

#### get_jwks_keys(\*args, \*\*kwargs)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_nonce"></a>

#### get_nonce(nonce)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_remote_jwks_keys"></a>

#### get_remote_jwks_keys()

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_setting_config"></a>

#### get_setting_config(setting_name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), oidc_name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), default: [str](https://docs.python.org/3/builtins/stdtypes.html#str), , stage: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown'] = 'begin') → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_user_details"></a>

#### get_user_details(response)

Return user details from the UserInfo response or ID token.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_user_groups"></a>

#### get_user_groups(response) → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Return normalized external memberships, or None when disabled.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.get_user_id"></a>

#### get_user_id(details, response)

Return a unique ID for the current user, by default from server
response or details.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.id_token_audiences"></a>

#### *static* id_token_audiences(audience) → [set](https://docs.python.org/3/builtins/stdtypes.html#set)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.id_token_issuer"></a>

#### id_token_issuer() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.jwks_uri"></a>

#### jwks_uri() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.name"></a>

#### name *= 'oidc'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.oidc_config"></a>

#### oidc_config(\*args, \*\*kwargs)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.oidc_endpoint"></a>

#### oidc_endpoint() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.pipeline"></a>

#### pipeline(pipeline, pipeline_index: [int](https://docs.python.org/3/builtins/functions.html#int) = 0, \*args, \*\*kwargs) → [UserProtocol](#social_core.storage.UserProtocol) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.process_refresh_token_response"></a>

#### process_refresh_token_response(response, \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.remove_nonce"></a>

#### remove_nonce(nonce_id) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.request_access_token"></a>

#### request_access_token(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), method: Literal['GET', 'POST', 'DELETE'] = 'GET', headers: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, json: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, auth: [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | AuthBase | [None](https://docs.python.org/3/builtins/constants.html#None) = None, params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, , stage: ErrorStage = 'token_exchange') → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[Any, Any]

Retrieve the access token. Also, validate the id_token and
store it (temporarily).

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.revoke_token_url"></a>

#### revoke_token_url(token, uid) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.title"></a>

#### title *= 'OpenID Connect'*

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.use_basic_auth"></a>

#### use_basic_auth() → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.user_data"></a>

#### user_data(access_token: [str](https://docs.python.org/3/builtins/stdtypes.html#str), \*args, \*\*kwargs) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Loads user data from service. Implement in subclass

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.userinfo_url"></a>

#### userinfo_url() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_and_return_id_token"></a>

#### validate_and_return_id_token(id_token, access_token)

Validates the id_token according to the steps at
[http://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation](http://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation).

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_and_return_refresh_id_token"></a>

#### validate_and_return_refresh_id_token(id_token, access_token)

Validate an ID token returned by a refresh request.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_at_hash"></a>

#### validate_at_hash(claims, access_token, key)

Validate the ‘at_hash’ claim according to OpenID Connect specs.

See: [https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken](https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_authorized_party"></a>

#### validate_authorized_party(claims, client_id: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [None](https://docs.python.org/3/builtins/constants.html#None)

Validate the client authorized to use the ID token.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_claims"></a>

#### validate_claims(id_token) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_refresh_id_token_claims"></a>

#### validate_refresh_id_token_claims(previous, current) → [None](https://docs.python.org/3/builtins/constants.html#None)

Validate identity continuity for an ID token refresh.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_required_id_token_claims"></a>

#### validate_required_id_token_claims(claims) → [None](https://docs.python.org/3/builtins/constants.html#None)

Validate claims required in every ID token.

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_temporal_claims"></a>

#### validate_temporal_claims(id_token) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.backends.open_id_connect.OpenIdConnectAuth.validate_userinfo_sub"></a>

#### validate_userinfo_sub(userinfo: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)

Validate that UserInfo belongs to the validated ID token subject.

<a id="module-social_core.pipeline.social_auth"></a>

<a id="pipeline"></a>

## Pipeline

<a id="social_core.pipeline.social_auth.associate_by_email"></a>

### social_core.pipeline.social_auth.associate_by_email(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, \*\*kwargs)

Associate current auth with a user with the same email address in the DB.

This pipeline entry is not 100% secure unless you know that the providers
enabled enforce email verification on their side, otherwise a user can
attempt to take over another user account by using the same (not validated)
email address on some provider.  This pipeline entry is disabled by
default.

<a id="social_core.pipeline.social_auth.associate_user"></a>

### social_core.pipeline.social_auth.associate_user(backend: [BaseAuth](#social_core.backends.base.BaseAuth), uid, user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, social=None, \*args, id_key='', legacy_uids=(), \*\*kwargs)

<a id="social_core.pipeline.social_auth.auth_allowed"></a>

### social_core.pipeline.social_auth.auth_allowed(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, response, \*args, \*\*kwargs) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.pipeline.social_auth.load_extra_data"></a>

### social_core.pipeline.social_auth.load_extra_data(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, response, uid, user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, \*\*kwargs) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.pipeline.social_auth.social_details"></a>

### social_core.pipeline.social_auth.social_details(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, response, \*args, \*\*kwargs)

<a id="social_core.pipeline.social_auth.social_names"></a>

### social_core.pipeline.social_auth.social_names(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, \*args, \*\*kwargs)

Populate missing full or component names using provider details.

<a id="social_core.pipeline.social_auth.social_uid"></a>

### social_core.pipeline.social_auth.social_uid(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, response, \*args, \*\*kwargs)

<a id="social_core.pipeline.social_auth.social_user"></a>

### social_core.pipeline.social_auth.social_user(backend: [BaseAuth](#social_core.backends.base.BaseAuth), uid, user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, id_key='', legacy_uids=(), \*\*kwargs)

<a id="module-social_core.pipeline.user"></a>

<a id="social_core.pipeline.user.create_user"></a>

### social_core.pipeline.user.create_user(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy), details, backend: [BaseAuth](#social_core.backends.base.BaseAuth), user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, \*\*kwargs)

<a id="social_core.pipeline.user.get_username"></a>

### social_core.pipeline.user.get_username(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy), details, backend: [BaseAuth](#social_core.backends.base.BaseAuth), user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, \*\*kwargs)

<a id="social_core.pipeline.user.sync_groups"></a>

### social_core.pipeline.user.sync_groups(strategy, backend, response, user=None, groups=None, \*\*kwargs) → [None](https://docs.python.org/3/builtins/constants.html#None)

Synchronize local memberships through the application’s strategy.

<a id="social_core.pipeline.user.user_details"></a>

### social_core.pipeline.user.user_details(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy), details, backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None), user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, \*\*kwargs) → [None](https://docs.python.org/3/builtins/constants.html#None)

Update user details using data from provider.

<a id="module-social_core.pipeline.mail"></a>

<a id="social_core.pipeline.mail.mail_validation"></a>

### social_core.pipeline.mail.mail_validation(backend: [BaseAuth](#social_core.backends.base.BaseAuth), details, is_new=False, \*args, \*\*kwargs)

<a id="module-social_core.strategy"></a>

<a id="framework-integration"></a>

## Framework integration

<a id="social_core.strategy.BaseStrategy"></a>

### *class* social_core.strategy.BaseStrategy(storage: [type](https://docs.python.org/3/builtins/functions.html#type)[[BaseStorage](#social_core.storage.BaseStorage)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, tpl: [type](https://docs.python.org/3/builtins/functions.html#type)[[BaseTemplateStrategy](#social_core.strategy.BaseTemplateStrategy)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

<a id="social_core.strategy.BaseStrategy.ALLOWED_CHARS"></a>

#### ALLOWED_CHARS *= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'*

<a id="social_core.strategy.BaseStrategy.DEFAULT_TEMPLATE_STRATEGY"></a>

#### DEFAULT_TEMPLATE_STRATEGY

alias of [`BaseTemplateStrategy`](#social_core.strategy.BaseTemplateStrategy)

<a id="social_core.strategy.BaseStrategy.SESSION_SAVE_KEY"></a>

#### SESSION_SAVE_KEY *= 'psa_session_id'*

<a id="social_core.strategy.BaseStrategy.absolute_uri"></a>

#### absolute_uri(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.strategy.BaseStrategy.authenticate"></a>

#### authenticate(backend: [BaseAuth](#social_core.backends.base.BaseAuth), \*args, \*\*kwargs) → [UserProtocol](#social_core.storage.UserProtocol) | [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

Trigger the authentication mechanism tied to the current
framework

<a id="social_core.strategy.BaseStrategy.build_absolute_uri"></a>

#### build_absolute_uri(path: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Build absolute URI with given (optional) path

<a id="social_core.strategy.BaseStrategy.clean_authenticate_args"></a>

#### clean_authenticate_args(\*args, \*\*kwargs)

Take authenticate arguments and return a “cleaned” version
of them

<a id="social_core.strategy.BaseStrategy.clean_partial_pipeline"></a>

#### clean_partial_pipeline(token) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.strategy.BaseStrategy.create_user"></a>

#### create_user(\*args, \*\*kwargs)

<a id="social_core.strategy.BaseStrategy.from_session_value"></a>

#### from_session_value(val)

<a id="social_core.strategy.BaseStrategy.get_backend"></a>

#### get_backend(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), redirect_uri: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*\*kwargs) → [BaseAuth](#social_core.backends.base.BaseAuth)

Return a configured backend instance

<a id="social_core.strategy.BaseStrategy.get_backend_class"></a>

#### get_backend_class(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [type](https://docs.python.org/3/builtins/functions.html#type)[[BaseAuth](#social_core.backends.base.BaseAuth)]

Return a configured backend class

<a id="social_core.strategy.BaseStrategy.get_backends"></a>

#### get_backends() → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return configured backends

<a id="social_core.strategy.BaseStrategy.get_disconnect_pipeline"></a>

#### get_disconnect_pipeline(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.strategy.BaseStrategy.get_language"></a>

#### get_language() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return current language

<a id="social_core.strategy.BaseStrategy.get_pipeline"></a>

#### get_pipeline(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.strategy.BaseStrategy.get_request_data"></a>

#### get_request_data(merge: [bool](https://docs.python.org/3/builtins/functions.html#bool) = True) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return data from the current framework request (POST or GET).

<a id="social_core.strategy.BaseStrategy.get_session_id"></a>

#### get_session_id() → [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)

Return session ID to be used by restore_session.

<a id="social_core.strategy.BaseStrategy.get_setting"></a>

#### get_setting(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Return value for given setting name

<a id="social_core.strategy.BaseStrategy.get_storage"></a>

#### get_storage(, stage: ErrorStage) → [type](https://docs.python.org/3/builtins/functions.html#type)[[BaseStorage](#social_core.storage.BaseStorage)]

Resolve storage while reporting failures at the calling operation.

<a id="social_core.strategy.BaseStrategy.get_user"></a>

#### get_user(\*args, \*\*kwargs)

<a id="social_core.strategy.BaseStrategy.html"></a>

#### html(content: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol)

Return HTTP response with given content

<a id="social_core.strategy.BaseStrategy.openid_session_dict"></a>

#### openid_session_dict(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → OpenIdSessionWrapper

<a id="social_core.strategy.BaseStrategy.openid_store"></a>

#### openid_store() → OpenIdStore

<a id="social_core.strategy.BaseStrategy.partial_load"></a>

#### partial_load(token: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [PartialMixin](#social_core.storage.PartialMixin) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.strategy.BaseStrategy.partial_pipeline_external_resume_confirmation"></a>

#### partial_pipeline_external_resume_confirmation(backend: [BaseAuth](#social_core.backends.base.BaseAuth), partial: [PartialMixin](#social_core.storage.PartialMixin), request_data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any]) → [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.strategy.BaseStrategy.partial_pipeline_external_resume_confirmed"></a>

#### partial_pipeline_external_resume_confirmed(backend: [BaseAuth](#social_core.backends.base.BaseAuth), request_data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any]) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.strategy.BaseStrategy.pipeline_request_data"></a>

#### pipeline_request_data(data: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None)) → Iterator[[None](https://docs.python.org/3/builtins/constants.html#None)]

Scope effective request data to one pipeline execution.

<a id="social_core.strategy.BaseStrategy.random_string"></a>

#### random_string(length: [int](https://docs.python.org/3/builtins/functions.html#int) = 12, chars: [str](https://docs.python.org/3/builtins/stdtypes.html#str) = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.strategy.BaseStrategy.redirect"></a>

#### redirect(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol)

Return a response redirect to the given URL

<a id="social_core.strategy.BaseStrategy.render_html"></a>

#### render_html(tpl: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, html: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Render given template or raw html with given context

<a id="social_core.strategy.BaseStrategy.request_data"></a>

#### request_data(merge: [bool](https://docs.python.org/3/builtins/functions.html#bool) = True) → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]

Return effective pipeline data, or data from the current request.

During a partial resume, merge does not change the replayed mapping.
Use get_request_data(), request_get(), or request_post() to read the
current framework request without replayed data.

<a id="social_core.strategy.BaseStrategy.request_get"></a>

#### request_get()

Request GET data

<a id="social_core.strategy.BaseStrategy.request_host"></a>

#### request_host() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return current host value

<a id="social_core.strategy.BaseStrategy.request_is_secure"></a>

#### request_is_secure() → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Is the request using HTTPS?

<a id="social_core.strategy.BaseStrategy.request_path"></a>

#### request_path() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

path of the current request

<a id="social_core.strategy.BaseStrategy.request_port"></a>

#### request_port() → [int](https://docs.python.org/3/builtins/functions.html#int)

Port in use for this request

<a id="social_core.strategy.BaseStrategy.request_post"></a>

#### request_post()

Request POST data

<a id="social_core.strategy.BaseStrategy.restore_session"></a>

#### restore_session(session_id: [str](https://docs.python.org/3/builtins/stdtypes.html#str), kwargs: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [None](https://docs.python.org/3/builtins/constants.html#None)

Restores session and updates kwargs to match it.

This is only called if get_session_id returns a value.

<a id="social_core.strategy.BaseStrategy.send_email_validation"></a>

#### send_email_validation(backend: [BaseAuth](#social_core.backends.base.BaseAuth), email: [str](https://docs.python.org/3/builtins/stdtypes.html#str), partial_token: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [CodeMixin](#social_core.storage.CodeMixin)

<a id="social_core.strategy.BaseStrategy.session_get"></a>

#### session_get(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), default=None)

Return session value for given key

<a id="social_core.strategy.BaseStrategy.session_pop"></a>

#### session_pop(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Pop session value for given key

<a id="social_core.strategy.BaseStrategy.session_set"></a>

#### session_set(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), value)

Set session value for given key

<a id="social_core.strategy.BaseStrategy.session_setdefault"></a>

#### session_setdefault(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), value)

<a id="social_core.strategy.BaseStrategy.setting"></a>

#### setting(name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), default=None, backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

<a id="social_core.strategy.BaseStrategy.storage"></a>

#### *property* storage *: [type](https://docs.python.org/3/builtins/functions.html#type)[[BaseStorage](#social_core.storage.BaseStorage)]*

<a id="social_core.strategy.BaseStrategy.sync_user_groups"></a>

#### sync_user_groups(user, groups: [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None), , backend: [BaseAuth](#social_core.backends.base.BaseAuth), response, \*\*kwargs) → [None](https://docs.python.org/3/builtins/constants.html#None)

Override to apply configured external memberships to local groups.

<a id="social_core.strategy.BaseStrategy.to_session_value"></a>

#### to_session_value(val)

<a id="social_core.strategy.BaseStrategy.validate_email"></a>

#### validate_email(email: [str](https://docs.python.org/3/builtins/stdtypes.html#str), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.strategy.BaseTemplateStrategy"></a>

### *class* social_core.strategy.BaseTemplateStrategy(strategy)

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

<a id="social_core.strategy.BaseTemplateStrategy.render"></a>

#### render(tpl: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, html: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.strategy.BaseTemplateStrategy.render_string"></a>

#### render_string(html: [str](https://docs.python.org/3/builtins/stdtypes.html#str), context: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.strategy.BaseTemplateStrategy.render_template"></a>

#### render_template(tpl: [str](https://docs.python.org/3/builtins/stdtypes.html#str), context: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.strategy.HttpResponseProtocol"></a>

### *class* social_core.strategy.HttpResponseProtocol(\*args, \*\*kwargs)

Bases: [`Protocol`](https://docs.python.org/3/library/typing.html#typing.Protocol)

<a id="social_core.strategy.HttpResponseProtocol.url"></a>

#### *property* url *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

<a id="module-social_core.storage"></a>

Models mixins for Social Auth

<a id="social_core.storage.AssociationMixin"></a>

### *class* social_core.storage.AssociationMixin

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

OpenId account association

<a id="social_core.storage.AssociationMixin.assoc_type"></a>

#### assoc_type *= ''*

<a id="social_core.storage.AssociationMixin.get"></a>

#### *classmethod* get(server_url: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, handle: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Get an Association instance

<a id="social_core.storage.AssociationMixin.handle"></a>

#### handle *= ''*

<a id="social_core.storage.AssociationMixin.is_expired"></a>

#### is_expired(now: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Return whether the association’s lifetime has elapsed.

<a id="social_core.storage.AssociationMixin.issued"></a>

#### issued *= 0*

<a id="social_core.storage.AssociationMixin.lifetime"></a>

#### lifetime *= 0*

<a id="social_core.storage.AssociationMixin.oids"></a>

#### *classmethod* oids(server_url, handle=None)

<a id="social_core.storage.AssociationMixin.openid_association"></a>

#### *classmethod* openid_association(assoc)

<a id="social_core.storage.AssociationMixin.remove"></a>

#### *classmethod* remove(ids_to_delete)

Remove an Association instance

<a id="social_core.storage.AssociationMixin.secret"></a>

#### secret *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)* *= ''*

<a id="social_core.storage.AssociationMixin.server_url"></a>

#### server_url *= ''*

<a id="social_core.storage.AssociationMixin.store"></a>

#### *classmethod* store(server_url, association)

Create an Association instance

<a id="social_core.storage.BaseStorage"></a>

### *class* social_core.storage.BaseStorage

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

<a id="social_core.storage.BaseStorage.association"></a>

#### association

alias of [`AssociationMixin`](#social_core.storage.AssociationMixin)

<a id="social_core.storage.BaseStorage.code"></a>

#### code

alias of [`CodeMixin`](#social_core.storage.CodeMixin)

<a id="social_core.storage.BaseStorage.is_integrity_error"></a>

#### *classmethod* is_integrity_error(exception) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Check if given exception flags an integrity error in the DB

<a id="social_core.storage.BaseStorage.nonce"></a>

#### nonce

alias of [`NonceMixin`](#social_core.storage.NonceMixin)

<a id="social_core.storage.BaseStorage.partial"></a>

#### partial

alias of [`PartialMixin`](#social_core.storage.PartialMixin)

<a id="social_core.storage.BaseStorage.user"></a>

#### user

alias of [`UserMixin`](#social_core.storage.UserMixin)

<a id="social_core.storage.CodeMixin"></a>

### *class* social_core.storage.CodeMixin

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

<a id="social_core.storage.CodeMixin.code"></a>

#### code *= ''*

<a id="social_core.storage.CodeMixin.email"></a>

#### email *= ''*

<a id="social_core.storage.CodeMixin.generate_code"></a>

#### *classmethod* generate_code()

<a id="social_core.storage.CodeMixin.get_code"></a>

#### *classmethod* get_code(code)

<a id="social_core.storage.CodeMixin.is_expired"></a>

#### is_expired(seconds: [int](https://docs.python.org/3/builtins/functions.html#int)) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Return whether the code has reached its lifetime, or has no timestamp.

<a id="social_core.storage.CodeMixin.make_code"></a>

#### *classmethod* make_code(email: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [CodeMixin](#social_core.storage.CodeMixin)

<a id="social_core.storage.CodeMixin.save"></a>

#### *abstractmethod* save()

<a id="social_core.storage.CodeMixin.timestamp"></a>

#### timestamp *: [datetime](https://docs.python.org/3/library/datetime.html#datetime.datetime) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.storage.CodeMixin.verified"></a>

#### verified *= False*

<a id="social_core.storage.CodeMixin.verify"></a>

#### verify() → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.storage.NonceMixin"></a>

### *class* social_core.storage.NonceMixin

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

One use numbers

<a id="social_core.storage.NonceMixin.delete"></a>

#### *classmethod* delete(nonce)

Delete a Nonce instance

<a id="social_core.storage.NonceMixin.get"></a>

#### *classmethod* get(server_url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), salt: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Retrieve a Nonce instance

<a id="social_core.storage.NonceMixin.salt"></a>

#### salt *= ''*

<a id="social_core.storage.NonceMixin.server_url"></a>

#### server_url *= ''*

<a id="social_core.storage.NonceMixin.timestamp"></a>

#### timestamp *= 0*

<a id="social_core.storage.NonceMixin.use"></a>

#### *classmethod* use(server_url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), timestamp, salt: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Create a Nonce instance

<a id="social_core.storage.PartialMixin"></a>

### *class* social_core.storage.PartialMixin

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

<a id="social_core.storage.PartialMixin.args"></a>

#### *property* args

<a id="social_core.storage.PartialMixin.backend"></a>

#### backend *= ''*

<a id="social_core.storage.PartialMixin.data"></a>

#### data *: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]* *= {}*

<a id="social_core.storage.PartialMixin.destroy"></a>

#### *classmethod* destroy(token: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

<a id="social_core.storage.PartialMixin.extend_kwargs"></a>

#### extend_kwargs(values) → [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.storage.PartialMixin.generate_token"></a>

#### *classmethod* generate_token() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.storage.PartialMixin.kwargs"></a>

#### *property* kwargs

<a id="social_core.storage.PartialMixin.load"></a>

#### *classmethod* load(token: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [PartialMixin](#social_core.storage.PartialMixin) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.storage.PartialMixin.next_step"></a>

#### next_step *: [int](https://docs.python.org/3/builtins/functions.html#int)*

<a id="social_core.storage.PartialMixin.pipeline_type"></a>

#### *property* pipeline_type *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

Legacy partials may resume authentication, but never disconnect.

<a id="social_core.storage.PartialMixin.prepare"></a>

#### *classmethod* prepare(backend: [str](https://docs.python.org/3/builtins/stdtypes.html#str), next_step: [int](https://docs.python.org/3/builtins/functions.html#int), data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) → [PartialMixin](#social_core.storage.PartialMixin)

<a id="social_core.storage.PartialMixin.request_data"></a>

#### *property* request_data *: [Mapping](https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None)*

Effective data for a resume, including legacy partial snapshots.

<a id="social_core.storage.PartialMixin.save"></a>

#### *abstractmethod* save()

<a id="social_core.storage.PartialMixin.store"></a>

#### *classmethod* store(partial: [PartialMixin](#social_core.storage.PartialMixin)) → [PartialMixin](#social_core.storage.PartialMixin)

<a id="social_core.storage.PartialMixin.token"></a>

#### token *= ''*

<a id="social_core.storage.PipelineUserProtocol"></a>

### *class* social_core.storage.PipelineUserProtocol(\*args, \*\*kwargs)

Bases: [`UserProtocol`](#social_core.storage.UserProtocol), [`Protocol`](https://docs.python.org/3/library/typing.html#typing.Protocol)

<a id="social_core.storage.PipelineUserProtocol.is_new"></a>

#### is_new *: [bool](https://docs.python.org/3/builtins/functions.html#bool)*

<a id="social_core.storage.PipelineUserProtocol.social_user"></a>

#### social_user *: [UserMixin](#social_core.storage.UserMixin) | [None](https://docs.python.org/3/builtins/constants.html#None)*

<a id="social_core.storage.UserMixin"></a>

### *class* social_core.storage.UserMixin

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

<a id="social_core.storage.UserMixin.ACCESS_TOKEN_EXPIRED_THRESHOLD"></a>

#### ACCESS_TOKEN_EXPIRED_THRESHOLD *= 5*

<a id="social_core.storage.UserMixin.access_token"></a>

#### *property* access_token *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)*

Return access_token stored in extra_data or None

<a id="social_core.storage.UserMixin.access_token_expired"></a>

#### access_token_expired()

Return true / false if access token is already expired

<a id="social_core.storage.UserMixin.allowed_to_disconnect"></a>

#### *classmethod* allowed_to_disconnect(user: [UserProtocol](#social_core.storage.UserProtocol), backend_name: [str](https://docs.python.org/3/builtins/stdtypes.html#str), association_id=None) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Return if it’s safe to disconnect the social account for the
given user

<a id="social_core.storage.UserMixin.changed"></a>

#### *classmethod* changed(user: [UserProtocol](#social_core.storage.UserProtocol)) → [None](https://docs.python.org/3/builtins/constants.html#None)

The given user instance is ready to be saved

<a id="social_core.storage.UserMixin.clean_username"></a>

#### *classmethod* clean_username(value: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Clean username removing any unsupported character

<a id="social_core.storage.UserMixin.create_social_auth"></a>

#### *classmethod* create_social_auth(user: [UserProtocol](#social_core.storage.UserProtocol), uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), provider: [str](https://docs.python.org/3/builtins/stdtypes.html#str), id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str) = '')

Create a UserSocialAuth instance for given user

<a id="social_core.storage.UserMixin.create_user"></a>

#### *classmethod* create_user(\*args, \*\*kwargs)

Create a user instance

<a id="social_core.storage.UserMixin.disconnect"></a>

#### *classmethod* disconnect(entry)

Disconnect the social account for the given user

<a id="social_core.storage.UserMixin.expiration_datetime"></a>

#### expiration_datetime()

<a id="social_core.storage.UserMixin.expiration_timedelta"></a>

#### expiration_timedelta() → [timedelta](https://docs.python.org/3/library/datetime.html#datetime.timedelta) | [None](https://docs.python.org/3/builtins/constants.html#None)

Return provider session live seconds.

Returns a timedelta ready to use with session.set_expiry().
If provider returns a timestamp instead of session seconds to live, the
timedelta is inferred from current time (using UTC timezone).

Handles three types of expiration data:
- expires_on: Always treated as absolute timestamp
- expires_in: Always treated as relative seconds from auth_time
- expires: Uses heuristic (>63072000 = 2 years) to distinguish timestamp vs relative

<a id="social_core.storage.UserMixin.extra_data"></a>

#### extra_data *: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]*

<a id="social_core.storage.UserMixin.get_access_token"></a>

#### get_access_token(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)

Returns a valid access token.

<a id="social_core.storage.UserMixin.get_backend"></a>

#### get_backend(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy)) → [type](https://docs.python.org/3/builtins/functions.html#type)[[BaseAuth](#social_core.backends.base.BaseAuth)]

<a id="social_core.storage.UserMixin.get_backend_instance"></a>

#### get_backend_instance(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy)) → [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.storage.UserMixin.get_social_auth"></a>

#### *classmethod* get_social_auth(provider: [str](https://docs.python.org/3/builtins/stdtypes.html#str), uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Return UserSocialAuth for given provider and uid

<a id="social_core.storage.UserMixin.get_social_auth_by_extra_data"></a>

#### *classmethod* get_social_auth_by_extra_data(provider: [str](https://docs.python.org/3/builtins/stdtypes.html#str), key: [str](https://docs.python.org/3/builtins/stdtypes.html#str), value: [str](https://docs.python.org/3/builtins/stdtypes.html#str), id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str) = '')

Return an unambiguous association matching stored provider data.

<a id="social_core.storage.UserMixin.get_social_auth_for_user"></a>

#### *classmethod* get_social_auth_for_user(user: [UserProtocol](#social_core.storage.UserProtocol), provider: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, id: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Return all the UserSocialAuth instances for given user

<a id="social_core.storage.UserMixin.get_user"></a>

#### *classmethod* get_user(pk)

Return user instance for given id

<a id="social_core.storage.UserMixin.get_username"></a>

#### *classmethod* get_username(user: [UserProtocol](#social_core.storage.UserProtocol)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Return the username for given user

<a id="social_core.storage.UserMixin.get_users_by_email"></a>

#### *classmethod* get_users_by_email(email: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Return users instances for given email address

<a id="social_core.storage.UserMixin.id_key"></a>

#### id_key *= ''*

<a id="social_core.storage.UserMixin.migrate_social_auth"></a>

#### *classmethod* migrate_social_auth(social, uid: [str](https://docs.python.org/3/builtins/stdtypes.html#str), id_key: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

Atomically replace an association’s identifier and identifier key.

<a id="social_core.storage.UserMixin.provider"></a>

#### provider *= ''*

<a id="social_core.storage.UserMixin.refresh_token"></a>

#### refresh_token(strategy: [BaseStrategy](#social_core.strategy.BaseStrategy), \*args, \*\*kwargs) → [None](https://docs.python.org/3/builtins/constants.html#None)

Renew stored credentials using the backend’s selected token.

Missing renewal credentials require reauthentication only when the
stored access token is known to have expired. Otherwise no request is
sent. Backends without a refresh method are left unchanged.

<a id="social_core.storage.UserMixin.save"></a>

#### *abstractmethod* save()

<a id="social_core.storage.UserMixin.set_extra_data"></a>

#### set_extra_data(extra_data: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.storage.UserMixin.uid"></a>

#### uid *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

<a id="social_core.storage.UserMixin.user"></a>

#### user *: [UserProtocol](#social_core.storage.UserProtocol)*

<a id="social_core.storage.UserMixin.user_exists"></a>

#### *classmethod* user_exists(\*args, \*\*kwargs) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Return True/False if a User instance exists with the given arguments.
Arguments are directly passed to filter() manager method.

<a id="social_core.storage.UserMixin.user_model"></a>

#### *classmethod* user_model() → [type](https://docs.python.org/3/builtins/functions.html#type)[[UserProtocol](#social_core.storage.UserProtocol)]

Return the user model

<a id="social_core.storage.UserMixin.username_max_length"></a>

#### *classmethod* username_max_length() → [int](https://docs.python.org/3/builtins/functions.html#int)

Return the max length for username

<a id="social_core.storage.UserProtocol"></a>

### *class* social_core.storage.UserProtocol(\*args, \*\*kwargs)

Bases: [`Protocol`](https://docs.python.org/3/library/typing.html#typing.Protocol)

<a id="social_core.storage.UserProtocol.id"></a>

#### *property* id *: [int](https://docs.python.org/3/builtins/functions.html#int)*

<a id="social_core.storage.UserProtocol.is_active"></a>

#### *property* is_active *: [bool](https://docs.python.org/3/builtins/functions.html#bool) | Callable[[], [bool](https://docs.python.org/3/builtins/functions.html#bool)]*

<a id="social_core.storage.UserProtocol.is_authenticated"></a>

#### *property* is_authenticated *: [bool](https://docs.python.org/3/builtins/functions.html#bool) | Callable[[], [bool](https://docs.python.org/3/builtins/functions.html#bool)]*

<a id="social_core.storage.UserProtocol.username"></a>

#### *property* username *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

<a id="module-social_core.exceptions"></a>

<a id="errors-and-utilities"></a>

## Errors and utilities

Authentication failures with stable, framework-independent recovery metadata.

<a id="social_core.exceptions.AuthAssociationError"></a>

### *exception* social_core.exceptions.AuthAssociationError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

A local account or stored authentication identity conflicts.

<a id="social_core.exceptions.AuthAssociationError.default_code"></a>

#### default_code *= 'identity_in_use'*

<a id="social_core.exceptions.AuthCanceled"></a>

### *exception* social_core.exceptions.AuthCanceled(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

Authorization was explicitly declined or canceled.

<a id="social_core.exceptions.AuthCanceled.default_code"></a>

#### default_code *= 'authorization_declined'*

<a id="social_core.exceptions.AuthConfigurationError"></a>

### *exception* social_core.exceptions.AuthConfigurationError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`SocialAuthBaseException`](#social_core.exceptions.SocialAuthBaseException)

The integration needs configuration or implementation changes.

<a id="social_core.exceptions.AuthConfigurationError.default_code"></a>

#### default_code *= 'invalid_setting'*

<a id="social_core.exceptions.AuthCredentialError"></a>

### *exception* social_core.exceptions.AuthCredentialError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

Credentials were rejected or another provider login is required.

<a id="social_core.exceptions.AuthCredentialError.default_code"></a>

#### default_code *= 'credential_rejected'*

<a id="social_core.exceptions.AuthException"></a>

### *exception* social_core.exceptions.AuthException(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`SocialAuthBaseException`](#social_core.exceptions.SocialAuthBaseException)

Broad catch boundary for authentication-flow failures.

<a id="social_core.exceptions.AuthInputError"></a>

### *exception* social_core.exceptions.AuthInputError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

The application or browser supplied missing or invalid input.

<a id="social_core.exceptions.AuthInputError.default_code"></a>

#### default_code *= 'invalid_parameter'*

<a id="social_core.exceptions.AuthPolicyError"></a>

### *exception* social_core.exceptions.AuthPolicyError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

A local authentication or disconnect policy rejected the operation.

<a id="social_core.exceptions.AuthPolicyError.default_code"></a>

#### default_code *= 'authentication_disallowed'*

<a id="social_core.exceptions.AuthProviderError"></a>

### *exception* social_core.exceptions.AuthProviderError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

A provider request failed at the transport or HTTP boundary.

<a id="social_core.exceptions.AuthProviderError.default_code"></a>

#### default_code *= 'http_error'*

<a id="social_core.exceptions.AuthResponseError"></a>

### *exception* social_core.exceptions.AuthResponseError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

A provider response cannot be parsed or validated.

<a id="social_core.exceptions.AuthResponseError.default_code"></a>

#### default_code *= 'malformed_response'*

<a id="social_core.exceptions.AuthSessionError"></a>

### *exception* social_core.exceptions.AuthSessionError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

Authentication cannot be bound to its initiating session or user.

<a id="social_core.exceptions.AuthSessionError.default_code"></a>

#### default_code *= 'session_context_missing'*

<a id="social_core.exceptions.AuthUnknownError"></a>

### *exception* social_core.exceptions.AuthUnknownError(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`AuthException`](#social_core.exceptions.AuthException)

The authentication failure has no known structured classification.

<a id="social_core.exceptions.SocialAuthBaseException"></a>

### *exception* social_core.exceptions.SocialAuthBaseException(backend: [BaseAuth](#social_core.backends.base.BaseAuth) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*details: [object](https://docs.python.org/3/builtins/functions.html#object), code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, source: ErrorSource | [None](https://docs.python.org/3/builtins/constants.html#None) = None, stage: ErrorStage = 'unknown', recovery: RecoveryAction | [None](https://docs.python.org/3/builtins/constants.html#None) = None, parameter: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, claim: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, provider_code: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, context: Mapping[[str](https://docs.python.org/3/builtins/stdtypes.html#str), Any] | [None](https://docs.python.org/3/builtins/constants.html#None) = None)

Bases: [`ValueError`](https://docs.python.org/3/builtins/exceptions.html#ValueError)

Broad catch boundary for social-auth failures, including configuration.

<a id="social_core.exceptions.SocialAuthBaseException.default_code"></a>

#### default_code *= 'unknown_error'*

<a id="social_core.exceptions.SocialAuthBaseException.public_metadata"></a>

#### public_metadata() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Return non-identifying fields for client transports.

<a id="social_core.exceptions.SocialAuthBaseException.source"></a>

#### source *: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['configuration', 'request', 'session', 'provider_response', 'local_policy', 'storage', 'unknown']*

<a id="social_core.exceptions.SocialAuthBaseException.stage"></a>

#### stage *: [Literal](https://docs.python.org/3/library/typing.html#typing.Literal)['begin', 'callback', 'token_exchange', 'token_validation', 'user_info', 'pipeline', 'refresh', 'disconnect', 'unknown']*

<a id="module-social_core.utils"></a>

<a id="social_core.utils.PartialPipelineResult"></a>

### *class* social_core.utils.PartialPipelineResult(partial: 'PartialMixin | None' = None, response: 'HttpResponseProtocol | None' = None, halt: 'bool' = False)

<a id="social_core.utils.PartialPipelineResult.halt"></a>

#### halt *: [bool](https://docs.python.org/3/builtins/functions.html#bool)* *= False*

<a id="social_core.utils.PartialPipelineResult.partial"></a>

#### partial *: [PartialMixin](#social_core.storage.PartialMixin) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.utils.PartialPipelineResult.response"></a>

#### response *: [HttpResponseProtocol](#social_core.strategy.HttpResponseProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.utils.PartialPipelineSelection"></a>

### *class* social_core.utils.PartialPipelineSelection(token: 'str | None' = None, owns_token: 'bool' = False, pending_resume: 'bool' = False)

<a id="social_core.utils.PartialPipelineSelection.owns_token"></a>

#### owns_token *: [bool](https://docs.python.org/3/builtins/functions.html#bool)* *= False*

<a id="social_core.utils.PartialPipelineSelection.pending_resume"></a>

#### pending_resume *: [bool](https://docs.python.org/3/builtins/functions.html#bool)* *= False*

<a id="social_core.utils.PartialPipelineSelection.token"></a>

#### token *: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)* *= None*

<a id="social_core.utils.append_slash"></a>

### social_core.utils.append_slash(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Make sure we append a slash at the end of the URL otherwise we
have issues with urljoin Example:
>>> urlparse.urljoin(’[http://www.example.com/api/v3](http://www.example.com/api/v3)’, ‘user/1/’)
‘[http://www.example.com/api/user/1/](http://www.example.com/api/user/1/)’

<a id="social_core.utils.build_absolute_uri"></a>

### social_core.utils.build_absolute_uri(host_url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), path: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Build absolute URI with given (optional) path

<a id="social_core.utils.cache"></a>

### *class* social_core.utils.cache(ttl: [int](https://docs.python.org/3/builtins/functions.html#int))

Cache decorator that caches the return value of a method for a
specified time.

It maintains a cache per class and method arguments, so subclasses have a
different cache entry for the same cached method.

Call `method.invalidate()` to clear all entries, or
`method.invalidate(instance, *args, **kwargs)` to clear one entry.
Call `method.refresh(instance, *args, **kwargs)` to replace one entry
only after the underlying method succeeds. Failed refreshes propagate
their exception and preserve the existing value and expiry time.

<a id="social_core.utils.cache.cache"></a>

#### cache *: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[type](https://docs.python.org/3/builtins/functions.html#type), [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[Any](https://docs.python.org/3/library/typing.html#typing.Any), ...], [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)], ...]], [Any](https://docs.python.org/3/library/typing.html#typing.Any)]*

<a id="social_core.utils.constant_time_compare"></a>

### social_core.utils.constant_time_compare(val1: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes), val2: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [bytes](https://docs.python.org/3/builtins/stdtypes.html#bytes)) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Compare two values and prevent timing attacks for cryptographic use.

<a id="social_core.utils.drop_lists"></a>

### social_core.utils.drop_lists(value)

<a id="social_core.utils.first"></a>

### social_core.utils.first(func, items)

Return the first item in the list for what func returns True

<a id="social_core.utils.get_allowed_redirect_schemes"></a>

### social_core.utils.get_allowed_redirect_schemes(backend: [BaseAuth](#social_core.backends.base.BaseAuth)) → [set](https://docs.python.org/3/builtins/stdtypes.html#set)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

<a id="social_core.utils.get_querystring"></a>

### social_core.utils.get_querystring(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str))

<a id="social_core.utils.get_strategy"></a>

### social_core.utils.get_strategy(strategy: [str](https://docs.python.org/3/builtins/stdtypes.html#str), storage: [str](https://docs.python.org/3/builtins/stdtypes.html#str), \*args, \*\*kwargs) → [BaseStrategy](#social_core.strategy.BaseStrategy)

<a id="social_core.utils.handle_http_errors"></a>

### social_core.utils.handle_http_errors(func)

Normalize raw HTTP errors from integrations outside BaseAuth.request.

<a id="social_core.utils.http_error"></a>

### social_core.utils.http_error(backend: [BaseAuth](#social_core.backends.base.BaseAuth), error: requests.HTTPError, , stage: ErrorStage = 'user_info') → [SocialAuthBaseException](#social_core.exceptions.SocialAuthBaseException)

Normalize a Requests HTTP failure, including errors without responses.

<a id="social_core.utils.is_private_use_redirect"></a>

### social_core.utils.is_private_use_redirect(value: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None), allowed_schemes: Collection[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

Whether `value` uses a non-web scheme that has been explicitly allowed.

URI construction helpers such as `build_absolute_uri` only preserve http
and https, so callers must check this before turning a redirect candidate
into an absolute URI.

<a id="social_core.utils.is_url"></a>

### social_core.utils.is_url(value: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None), allowed_schemes: Collection[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.utils.module_member"></a>

### social_core.utils.module_member(name)

<a id="social_core.utils.normalize_redirect_schemes"></a>

### social_core.utils.normalize_redirect_schemes(schemes: Collection[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]) → [set](https://docs.python.org/3/builtins/stdtypes.html#set)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]

URI schemes are case-insensitive, and urlparse lowercases them.

<a id="social_core.utils.normalize_user_names"></a>

### social_core.utils.normalize_user_names(fullname: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = '', first_name: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = '', last_name: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = '', , firstlast_from_full: [bool](https://docs.python.org/3/builtins/functions.html#bool) = True, full_from_firstlast: [bool](https://docs.python.org/3/builtins/functions.html#bool) = True) → [tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)]

Fill missing name representations without replacing supplied names.

<a id="social_core.utils.parse_qs"></a>

### social_core.utils.parse_qs(value)

Like urlparse.parse_qs but transform list values to single items

<a id="social_core.utils.partial_pipeline_data"></a>

### social_core.utils.partial_pipeline_data(backend: [BaseAuth](#social_core.backends.base.BaseAuth), user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, partial_token: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, \*\*kwargs) → [PartialMixin](#social_core.storage.PartialMixin) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.utils.partial_pipeline_result"></a>

### social_core.utils.partial_pipeline_result(backend: [BaseAuth](#social_core.backends.base.BaseAuth), user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, partial_token: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, \*args, pipeline_type: [str](https://docs.python.org/3/builtins/stdtypes.html#str) = 'authentication', \*\*kwargs) → [PartialPipelineResult](#social_core.utils.PartialPipelineResult)

<a id="social_core.utils.provider_error"></a>

### social_core.utils.provider_error(backend: [BaseAuth](#social_core.backends.base.BaseAuth), data: [object](https://docs.python.org/3/builtins/functions.html#object), , stage: ErrorStage = 'callback', status_code: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, retry_after: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [SocialAuthBaseException](#social_core.exceptions.SocialAuthBaseException) | [None](https://docs.python.org/3/builtins/constants.html#None)

Classify structured protocol errors without inspecting descriptions.

<a id="social_core.utils.sanitize_redirect"></a>

### social_core.utils.sanitize_redirect(hosts: [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)], redirect_to: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | Any, allowed_schemes: Collection[[str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)

Given a list of hostnames and an untrusted URL to redirect to,
this method tests it to make sure it isn’t garbage/harmful
and returns it, else returns None, similar as how’s it done
on django.contrib.auth.views.

`allowed_schemes` defaults to http and https. Deployments that need to
hand control back to a native application can add a private-use URI scheme
(RFC 8252) through the `ALLOWED_REDIRECT_SCHEMES` setting.

<a id="social_core.utils.setting_name"></a>

### social_core.utils.setting_name(\*names: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.utils.setting_url"></a>

### social_core.utils.setting_url(backend: [BaseAuth](#social_core.backends.base.BaseAuth), \*names: [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str) | [None](https://docs.python.org/3/builtins/constants.html#None)

<a id="social_core.utils.slugify"></a>

### social_core.utils.slugify(value)

Converts to lowercase, removes non-word characters (alphanumerics
and underscores) and converts spaces to hyphens. Also strips leading
and trailing whitespace.

<a id="social_core.utils.to_setting_name"></a>

### social_core.utils.to_setting_name(\*names: [str](https://docs.python.org/3/builtins/stdtypes.html#str)) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

<a id="social_core.utils.url_add_parameters"></a>

### social_core.utils.url_add_parameters(url: [str](https://docs.python.org/3/builtins/stdtypes.html#str), params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [str](https://docs.python.org/3/builtins/stdtypes.html#str)] | [None](https://docs.python.org/3/builtins/constants.html#None), \_unquote_query: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False) → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Adds parameters to URL, parameter will be repeated if already present

<a id="social_core.utils.user_agent"></a>

### social_core.utils.user_agent() → [str](https://docs.python.org/3/builtins/stdtypes.html#str)

Builds a simple User-Agent string to send in requests

<a id="social_core.utils.user_is_active"></a>

### social_core.utils.user_is_active(user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.utils.user_is_authenticated"></a>

### social_core.utils.user_is_authenticated(user: [UserProtocol](#social_core.storage.UserProtocol) | [None](https://docs.python.org/3/builtins/constants.html#None)) → [bool](https://docs.python.org/3/builtins/functions.html#bool)

<a id="social_core.utils.wrap_access_token_error"></a>

### social_core.utils.wrap_access_token_error(backend: [BaseAuth](#social_core.backends.base.BaseAuth), , stage: ErrorStage = 'token_exchange')

Normalize token request HTTP errors without guessing their cause.
