@lsa413

Общий принцип (алгоритм) авторизации через соцсети и отправку комментариев, на подобие hypercomments и cackle?

Здравствуйте!
Некоторое время бьюсь над пониманием того, как лучше реализовать систему комментариев через социальные сети. К сожалению, нахватавшись беспорядочных знаний в PHP и JavaScript, у меня есть серьезные подозрения, что выбранный мною алгоритм ведет в никуда :)
Поэтому, хотелось бы спросить авторитетного мнения, по некоторым конкретным моментам.

Сразу оговорюсь, что я пытаюсь реализовать JavaScript авторизацию и отправку комментариев, без перезагрузки страницы.

Пока ограничусь одним вопросом. Для наглядности приведу пример с использованием JavaScript API Вконтакте:

1. Когда пользователь заходит на сайт, алгоритм должен проверить, не авторизован ли он уже через мое приложение Вконтакте (VK.Auth.getLoginStatus)? Проблема в том, что прежде чем у нас будет возможность сделать такую проверку, API Вконтакте должно быть инициализировано на сайте, причем асинхронно, дабы не мешать работе других скриптов и формированию DOM-дерева. Единственное, что я пока придумал, это поместить VK.Auth.getLoginStatus вот в такую конструкцию:

var intervalVKId = setInterval(
        function () {
            var vk_counter = $('#vk_counter').text();
            vk_counter++;
            $('#vk_counter').text(vk_counter);

            if (typeof VK === 'object') {
                VK.Auth.getLoginStatus(function(response) {
                    if (response.session) {
                        getVKUser(response.session.mid);
                        $('#vk').attr('status','login');
                    } else {
                        $('#vk').attr('status','logoff');
                    }
                    clearInterval(intervalVKId);
                });
            }

            if ($('#vk').attr('status') == 'logoff'
                || $('#vk').attr('status') == 'login'
                || $('#vk_counter').text() > 50) {
                setTimeout(function() {
                    clearInterval(intervalVKId);
                }, 100);
            }
        }, 100);


Если коротко, то я жду, пока VK станет object'ом, а это произойдет, после асинхронной инициализации API Вконтакте, после чего вызываю функцию проверки статуса VK.Auth.getLoginStatus. Ну а дальше уже в зависимости от response, либо помечаю кнопку авторизации как logoff, либо вытаскиваю данные пользователя через свою функцию getVKUser, подтягивая данные через VK.Api.call. Причем, если инициализация VK не пройдет, то через какое то время setInterval рубанется. Это реализовано через топорный счетчик скрытого div'a, что меня так же раздражает.

Есть подозрение, что я в данном случае забиваю гвозди микроскопом и есть более простые и элегантные решения. Буду благодарен за советы и комментарии :)
  • Вопрос задан
  • 502 просмотра
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Сделайте как у какле там же весь код открыт
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 17:14
4000 руб./за проект
29 мар. 2024, в 17:04
5000 руб./за проект
29 мар. 2024, в 17:03
3000 руб./за проект