• en
  • Language: ru
  • Documentation version: 0.1

Bungie

Bungie использует OAuth 2.0 для аутентификации.

  • Bungie не возвращает информацию об имени пользователя, электронной почте или имени. Они возвращают короткий идентификатор участника (учетная запись сайта bungie), который затем сохраняется как uid для социальной авторизации. Чтобы получить имя пользователя, вызывается _GetBungieNetUser_, который возвращает профиль bungie.net, включая имя пользователя в качестве поля _displayName_. Вы можете использовать функцию get_user_details для изменения поведения или перенаправления пользователей на частичный конвейерный поток, который собирает недостающие данные пользователя, такие как электронная почта, пароль (локальный для вашего сайта), имя, фамилия и т.д. Лучше всего прервать поток на 6-м шаге в примере ниже:

    SOCIAL_AUTH_PIPELINE = (
        # Get the information we can about the user and return it in a simple
        # format to create the user instance later. On some cases the details are
        # already part of the auth response from the provider, but sometimes this
        # could hit a provider API.
        'social_core.pipeline.social_auth.social_details',
        # Get the social uid from whichever service we're authing thru. The uid is
        # the unique identifier of the given user in the provider.
        'social_core.pipeline.social_auth.social_uid',
        # Verifies that the current auth process is valid within the current
        # project, this is where emails and domains whitelists are applied (if
        # defined).
        # Super'ed in bungie.py
        'social_core.pipeline.social_auth.auth_allowed',
        # Checks if the current social-account is already associated in the site.
        'social_core.pipeline.social_auth.social_user',
        # Make up a username for this person, appends a random string at the end if
        # there's any collision.
        'social_core.pipeline.user.get_username',
        # Redirect to an @partial view to get missing user information here.
        # If you wish to validate or associate by email, this is required.
        # '<my_app>.pipeline.required_user_information',
        # Send a validation email to the user to verify its email address.
        # Disabled by default.
        # 'social_core.pipeline.mail.mail_validation',
        # Associates the current social details with another user account with
        # a similar email address. Disabled by default.
        # 'social_core.pipeline.social_auth.associate_by_email',
        # Create a user account if we haven't found one yet.
        'social_core.pipeline.user.create_user',
        # Create the record that associates the social account with the user.
        'social_core.pipeline.social_auth.associate_user',
        # Populate the extra_data field in the social record with the values
        # specified by settings (and the default ones like access_token, etc).
        'social_core.pipeline.social_auth.load_extra_data',
        # Update the user record with any changed info from the auth service.
        'social_core.pipeline.user.user_details',
    )
    
  • Зарегистрируйте новое приложение на сайте https://www.bungie.net/en/Application/

  • Установите Callback URL на странице регистрации приложения Bungie.net на https://<your domain>/complete/bungie Это **должно быть https. Во время разработки вы можете использовать stunnel для проксирования запроса или установить sslserver из pip.

  • Установите значения Authentication Backend, Client ID (aka OAuth Key), OAuth Secret и X-API-KEY в настройках Django:

    AUTHENTICATION_BACKENDS = (
        ...
        'social_core.backends.bungie.BungieBaseAuth',
        ...
    )
    
    SOCIAL_AUTH_BUNGIE_API_KEY = '...'
    SOCIAL_AUTH_BUNGIE_KEY = '<client_id>'
    SOCIAL_AUTH_BUNGIE_SECRET = '...'
    SOCIAL_AUTH_BUNGIE_ORIGIN = '...'
    
  • Bungie разрешает пробелы в именах пользователей, измените их при необходимости:

    SOCIAL_AUTH_SLUGIFY_USERNAMES = False
    SOCIAL_AUTH_CLEAN_USERNAMES = False
    SOCIAL_AUTH_USER_MODEL = 'auth.User'