- en
 - Language: ru
 
- Documentation version: 0.1
 
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>