VK.com (бывший «Вконтакте»)¶
Поддержка сервиса авторизации VK.com (бывший Вконтакте).
OAuth2¶
VK.com использует OAuth2 для аутентификации.
Зарегистрируйте новое приложение по адресу VK.com API,
заполните значения
Application Id
иApplication Secret
в настройках:SOCIAL_AUTH_VK_OAUTH2_KEY = '' SOCIAL_AUTH_VK_OAUTH2_SECRET = ''
Добавьте
'social_core.backends.vk.VKOAuth2'
к вашемуSOCIAL_AUTH_AUTHENTICATION_BACKENDS
.Затем вы можете начать использовать
/login/vk-oauth2
в href вашей ссылки.Также можно определить дополнительные разрешения с помощью:
SOCIAL_AUTH_VK_OAUTH2_SCOPE = [...]
Приложение OAuth2¶
Для поддержки аутентификации OAuth2 для приложений VK.com:
Создайте свое приложение IFrame на VK.com.
В настройках приложения укажите URL вашего IFrame
https://mysite.com/complete/vk-app
(текущее значение по умолчанию).В настройках приложения укажите первый запрос API. Например:
method=getProfiles&uids={viewer_id}&format=json&v=5.53&fields=id,first_name,last_name,screen_name,photo
Add
'social_core.backends.vk.VKAppOAuth2'
into yourSOCIAL_AUTH_AUTHENTICATION_BACKENDS
.Настройки заполнения
Application ID
и << 1 >>>:SOCIAL_AUTH_VK_APP_KEY = '' SOCIAL_AUTH_VK_APP_SECRET = ''
Заполнить
user_mode
:SOCIAL_AUTH_VK_APP_USER_MODE = 2
- Возможные значения:
0
: не будет проверяться, подключился ли пользователь к вашему приложению или нет1
:python-social-auth
будет проверятьis_app_user
параметр, который VK.com отправляет, когда пользователь открывает страницу приложения один раз2
: (самый безопасный)python-social-auth
будет проверять статус пользователя интерактивно (полезно при интерактивной аутентификации через AJAX)
Добавьте в шаблон входа в систему фрагмент, подобный этому:
<script src="http://vk.com/js/api/xd_connection.js?2" type="text/javascript"></script> <script type="text/javascript"> VK.init(function() { VK.addCallback("onApplicationAdded", requestRights); VK.addCallback("onSettingsChanged", onSettingsChanged); } ); function startConnect() { VK.callMethod('showInstallBox'); } function requestRights() { VK.callMethod('showSettingsBox', 1 + 2); // 1+2 is just an example } function onSettingsChanged(settings) { window.location.reload(); } </script> <a href="#" onclick="startConnect(); return false;">Click to authenticate</a>
Для проверки запустите сервер с помощью sudo ./manage.py mysite.com:80
, чтобы браузер мог загрузить его, когда VK.com вызовет IFrame URL. Откройте страницу вашего приложения VK.com через http://vk.com/app<app_id>. Теперь вы можете подключиться к приложению и автоматически войти в систему после подключения при посещении страницы приложения.
Более подробную информацию можно найти в разделе authentication for VK.com applications
OpenAPI¶
Вы также можете использовать собственный OpenAPI VK.com для входа в систему, но вам необходимо предоставить HTML-шаблон с кодом JavaScript для аутентификации, пример смотрите ниже.
Получите OpenAPI App Id и добавьте его в настройки:
SOCIAL_AUTH_VK_OPENAPI_APP_ID = ''
Этот идентификатор приложения будет передан в шаблон как
VK_APP_ID
.Add
'social_core.backends.vk.VKontakteOpenAPI'
into yourSOCIAL_AUTH_AUTHENTICATION_BACKENDS
.
Пример фрагмента:
<script src="http://vk.com/js/api/openapi.js" type="text/javascript"></script>
<script type="text/javascript">
var vkAppId = {{ VK_APP_ID|default:"null" }};
if (vkAppId) {
VK.init({ apiId: vkAppId });
}
function authVK () {
if (!vkAppId) {
alert ("Please specify VK.com APP ID in your local settings file");
return false;
}
VK.Auth.login(function(response) {
var params = "";
if (response.session) {
params = "first_name=" + encodeURI(response.session.user.first_name) + "&last_name=" + encodeURI(response.session.user.last_name);
params += "&nickname=" + encodeURI(response.session.user.nickname) + "&id=" + encodeURI(response.session.user.id);
}
window.location = "{{ VK_COMPLETE_URL }}?" + params;
});
return false;
}
</script>
<a href="javascript:void(0);" onclick="authVK();">Click to authorize</a>