Как они применили Twitter oAuth здесь? - PullRequest
2 голосов
/ 30 июня 2009

Мне только что удалось создать oAuth-аутентификацию для моего твиттер-приложения с использованием PHP.

Затем я увидел этот сайт , и я удивлен, как они открывают новое окно, закрывают это окно и затем продолжают запрос в исходном окне ?! Может кто-то объяснить с помощью Javascript (я полагаю, они используют это), как они это сделали?!

Я замечаю, что когда второе окно закрывается, они делают два запроса GET.

Я хочу иметь возможность делать что-то подобное, так как мои пользователи могут писать контент на моем сайте, а я не хочу, чтобы это удалялось. Есть ли лучший способ, который не так навязчив? (окно открылось). Если нет, я буду использовать их метод, поскольку я не могу думать ни о чем другом.

Спасибо всем

1 Ответ

1 голос
/ 09 июля 2009

Вот часть кода JavaScript, связанная с этим:

TG.util.oauth = {
    win: null,
    timer: null,
    loginUpdate: function() {
        $.getJSON('/-login/check?format=json', TG.util.oauth.loginCallback);
    },
    loginCallback: function(data) {
        if (data && data.loggedin) {
            TG.util.login.update(data);
        }
    },
    winCheck: function() {
        if (!TG.util.oauth.win || TG.util.oauth.win.closed) {
            window.clearInterval(TG.util.oauth.timer);
            return TG.util.oauth.loginUpdate();
        }
    },
    loginClick: function() {
        TG.util.oauth.win = window.open('/-oauth-twitter/request?gotoafter=1&gotor=oauthtwitter&gotop=action%3Dwindowend', 
            'OAuthTwitterRequest', 
            'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,width=800,height=400');
        if (!TG.util.oauth.win) return true;

        TG.util.oauth.timer = window.setInterval(TG.util.oauth.winCheck, 300);
        return false;
    }
};

TG.util.oauth.win = window.open('/-oauth-twitter/request?gotoafter=1&gotor=oauthtwitter&gotop=action%3Dwindowend','OAuthTwitterRequest','menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,width=800,height=400');
открывает окно oAuth, которое обрабатывает логин

if (!TG.util.oauth.win) return true;
возвращает true, еслиокно не открывается (я думаю).

TG.util.oauth.timer = window.setInterval(TG.util.oauth.winCheck, 300);
порождает таймер, который проверяет, был ли вход в систему каждые 300 миллисекунд.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...