Django-social-auth不要登录

时间:2013-04-01 16:47:01

标签: django authentication vk

我的测试项目中有一个Django-social-auth。我需要进行身份验证抛出“vkontakte”(它是俄罗斯流行的社交网络)。 Docs。所以,在 / etc / hosts 中我有:

#127.0.0.1  localhost
127.0.1.1   pc-my-motherboard
127.0.0.1   domain.com

我将 social_auth 添加到已安装的应用中,以下是设置中的一些代码:

VK_APP_ID = '123456'
VK_API_SECRET = 'secrets :)'
VK_EXTRA_SCOPE = ['notify', 'friends', 'status', 'groups', 'notifications']


# Добавляем в AUTHENTICATION_BACKENDS нужные бекенды
AUTHENTICATION_BACKENDS = (
    'social_auth.backends.contrib.vkontakte.VKontakteOAuth2Backend',
    'django.contrib.auth.backends.ModelBackend',
)

# Добавляем в TEMPLATE_CONTEXT_PROCESSORS процессор "social_auth_by_name_backends"
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.request',
    'social_auth.context_processors.social_auth_by_name_backends',
    'social_auth.context_processors.social_auth_backends',
    'social_auth.context_processors.social_auth_by_type_backends',
    'social_auth.context_processors.social_auth_login_redirect',
)

# Если имя не удалось получить, то можно его сгенерировать
SOCIAL_AUTH_DEFAULT_USERNAME = lambda: random.choice(['0', '1', '2', '3', '4', '5'])

# Разрешаем создавать пользователей через social_auth
SOCIAL_AUTH_CREATE_USERS = True

# Перечислим pipeline, которые последовательно буду обрабатывать респонс 
SOCIAL_AUTH_PIPELINE = (
    # Получает по backend и uid инстансы social_user и user
    'social_auth.backends.pipeline.social.social_auth_user',
    # Получает по user.email инстанс пользователя и заменяет собой тот, который получили выше.
    # Кстати, email выдает только Facebook и GitHub, а Vkontakte и Twitter не выдают
    #'social_auth.backends.pipeline.associate.associate_by_email',
    # Пытается собрать правильный username, на основе уже имеющихся данных
    'social_auth.backends.pipeline.user.get_username',
    # Создает нового пользователя, если такого еще нет
    'social_auth.backends.pipeline.user.create_user',
    # Пытается связать аккаунты
    'social_auth.backends.pipeline.social.associate_user',
    # Получает и обновляет social_user.extra_data
    'social_auth.backends.pipeline.social.load_extra_data',
    # Обновляет инстанс user дополнительными данными с бекенда
    'social_auth.backends.pipeline.user.update_user_details'
)

SOCIAL_AUTH_UID_LENGTH = 223
SOCIAL_AUTH_NONCE_SERVER_URL_LENGTH = 18
SOCIAL_AUTH_ASSOCIATION_SERVER_URL_LENGTH = 18
SOCIAL_AUTH_ASSOCIATION_HANDLE_LENGTH = 223
SOCIAL_AUTH_UUID_LENGTH = 16

网址

urlpatterns = patterns('',
    url(r'$', 'myapp.views.index', name='index'),
    url(r'', include('social_auth.urls')),

)
index.html

中的

<p>Hello {{ user }}</p>

<a href="{% url 'socialauth_begin' 'vkontakte-oauth2' %}">Enter VK</a>

然后我启动服务器:sudo python manage.py runserver 127.0.0.1:80。我看到了链接,我按下它,然后转到http://domain.com/login/vkontakte-oauth2/。上次这个显示身份验证形成社交网络,并重新连接到我的网站,现在它没有发生。它非常奇怪,因为所有设置都是真的,请帮我解决。

感谢。

2 个答案:

答案 0 :(得分:0)

当您尝试访问表单时,您能否确定正在发生的事情? 你看到一个特定的错误吗? 当我尝试在django-social-auth demo上访问此社交网络的表单时,我收到错误消息。 也许有关vkontakte的应用程序的部分被窃听,似乎用于重定向的域名是坏的。 您可以检查您尝试访问的网址是否与通常用于登录社交网络的网址相对应。

问候。

答案 1 :(得分:0)

哦,错误在网址url(r'^$',中。只有铁杆