我的测试项目中有一个 Django-social-auth。我需要进行身份验证抛出“vkontakte”(它是俄罗斯流行的社交网络)。文档。所以,在/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/
. 上次这个节目认证形式的社交网络,并重定向到我的网站,现在它没有发生。这很奇怪,因为所有设置都是真的,请帮我修复它。
谢谢。