Django Social Auth и авторизация в приложениях для ВКонтакте: пример

23 августа 2012

Пример добавлен в мой fork и в главную ветку вот в этом pull request.

Ответы на: Django Social Auth и авторизация в приложениях для ВКонтакте: пример

  • adw0rd пишет:

    Сентябрь 16, 2012

    Привет, я что-то не могу настроить авторизацию через вконтакте для своего проекта.

    Смотрю сюда https://github.com/krvss/django-social-auth/blob/master/doc/backends/vkontakte.rst и вижу:

    > VK_APP_ID = »
    > VK_API_SECRET = »

    Смотрю в https://github.com/krvss/django-social-auth/blob/master/social_auth/backends/contrib/vkontakte.py и вижу

    > setting(‘VKONTAKTE_APP_ID’)
    > setting(‘VKONTAKTE_APP_SECRET’)

    И не пойму это нормально или документация устарела?

    • krvss пишет:

      Сентябрь 17, 2012

      Привет!

      Это нормально7 В моих сеттингах вот так:

      VKONTAKTE_APP_ID = ‘id’
      VKONTAKTE_APP_SECRET = ‘secret’
      VK_APP_ID = VKONTAKTE_APP_ID
      VK_API_SECRET = VKONTAKTE_APP_SECRET

      • adw0rd пишет:

        Сентябрь 17, 2012

        В моих тоже теперь, но может это в документацию добавить?

        • krvss пишет:

          Сентябрь 17, 2012

          Вообще все равно какие именно имена использовать, я об этом писал в блоге — добавлю при случае в доки.

  • vladimir пишет:

    Март 20, 2013

    У меня падает с ошибкой WrongBackend при таких шагах:
    1. Авторизуюсь с помощью Vkontakte
    2. При редиректе на /form/, там где просит ввести имя, я ввожу имя администратора и вылетает ошибка
    Подскажите пожалуйста как мне правильно обработать этот момент, я пока не совсем понимаю работу этой авторизации.

    • krvss пишет:

      Март 20, 2013

      Нужны подробности:

      1. Какой именно backend используется в настройках? Тот, который прописан в settings.py по умочанию?

      2. По какой системе авторизуетесь — OpenAPI, OAuth2?

      3. Указаны ли VKONTAKTE_APP_ID и VKONTAKTE_APP_SECRET?

      Редирект на /form/ вообще-то сделан только для примера, в рельной жизни его использовать не обязательно (и даже наверное нежелательно).

      • vladimir пишет:

        Март 20, 2013

        в настройках оставил 2 backend’а:
        ‘social_auth.backends.contrib.vkontakte.VKontakteOAuth2Backend’,
        ‘django.contrib.auth.backends.ModelBackend’,
        авторизуюсь по OAuth2, VKONTAKTE_APP_ID и VKONTAKTE_APP_SECRET указаны. Вообще авторизация проходит нормально, если на /form/ указать имя, которого еще нет в базе в таблице auth_user. Если же я указываю имя суперюзера, падает с ошибкой.

        • krvss пишет:

          Март 20, 2013

          А вы планируете использовать этот pipeline в реальной жизни? Ну, который выводит form.

          • vladimir пишет:

            Март 20, 2013

            Пока не могу ответить на этот вопрос, я пока не вижу решения того момента, как будет происходить авторизация, если нет имени пользователя.
            Вот пришел пользователь, «контакт» подтвердил, что это его пользователь и отдал мне какие-то данные. А что дальше делать, как создать этого пользователя в джанговской таблице? Я пока не могу понять. Насколько я понял форма как раз для того, чтобы взять имя пользователя и создать его. Или может быть просто рандомно генерить это самое имя пользователя? Вы не могли поделиться своим решением этого момента? Или может я чего-то не понимаю или понимаю не правильно?

          • krvss пишет:

            Март 20, 2013

            Пользователь будет создан в джанговской таблице автоматом (эта опция в DSA включена по умолчанию), никаких дополнительных усилий для этого предпринимать не нужно. Форма из примера — исключительно для иллюстрации возможностей pipeline (некоего постпроцессинга, если например хочется e-mail обязательно узнать до регистрации или еще чего-то накрутить специального).

          • vladimir пишет:

            Март 21, 2013

            спасибо за помощь, вроде заработало.
            Насколько я понял, проблема была в том, что в settings.py и в settings_local.py в SOCIAL_AUTH_PIPELINE за получение имени пользователя отвечают вот эти 2 строчки:

            'app.pipeline.redirect_to_form',
            'app.pipeline.username',

            а они не отдавали имени. Как только я поставил вот эту строчку:

            'social_auth.backends.pipeline.user.get_username',

            все заработало. Причем такие настройки и в вашем форке и в мастер версии.

          • vladimir пишет:

            Март 21, 2013

            сейчас перепроверил в вашей версии как раз нормальные настройки, а в мастер ветке как раз в примере стоят pipeline, которые дают ошибку

          • krvss пишет:

            Март 21, 2013

            Да, форму показывает как раз app.pipeline.redirect_to_form. Вообще конечно я бы советовал сделать тикет про это в основной ветке, видимо имя админа провоцирует какую-то ошибку.

  • vladimir пишет:

    Март 20, 2013

    совсем забыл уточнить, все это происходит на примере приложения

Оставить ответ