Войдите в мою сеть с расширением Chrome - PullRequest
9 голосов
/ 02 сентября 2011

У меня есть веб-сайт, где зарегистрированные пользователи могут заполнить форму для отправки информации. Я хотел, чтобы мои пользователи тоже делали это из расширения Chrome. Мне удалось получить работающую форму для отправки информации, но я хочу войти в систему только для того, чтобы пользователи могли это сделать. Это как расширение Twitter или Springpad, когда пользователь впервые открывает расширение, ему нужно будет войти в систему или зарегистрироваться. При переполнении стека я увидел следующий ответ: Войдите на сайт с расширением Chrome и получите от него данные

Я попробовал и поместил этот код в background.html:

function login() {
    $.ajax({
        url: "http://localhost/login", type: "GET", dataType: "html", success: function() {
            $.ajax({
                url: "http://localhost/login", type: "POST", data: {
                    "email": "me@alberto-elias.com",
                    "password": "mypassword",
                },
            dataType: "html",
            success: function(data) {
               //now you can parse your report screen
            }
            });
        }
    }); 
}

В моем popup.html я поместил следующий код:

var bkg = chrome.extension.getBackgroundPage()
$(document).ready(function() {
    $('#pageGaffe').val(bkg.getBgText());  
    bkg.login();        
});

И на моем сервере, который находится в node.js, у меня есть console.log, который показывает информацию о пользователе, когда он входит в систему, поэтому я увидел, что при загрузке расширения он входит в систему. Проблема в том, что как я могу заставить пользователя войти в систему самостоятельно, вместо того, чтобы вручную вводить свои данные в коде, как оставаться в системе в расширении и при отправке формы отправлять данные пользователя в Интернет.

Надеюсь, мне удалось правильно объяснить себя.

Спасибо.

Ответы [ 2 ]

17 голосов
/ 08 мая 2012

Прежде чем ответить на этот вопрос, я хотел бы обратить ваше внимание на то, что вы можете сделать перекрестный источник xhr из своих скриптов контента начиная с Chrome 13, если вы заявили правильные разрешения . Вот выдержка из страницы

Примечание о версии: Начиная с Chrome 13, скрипты содержимого могут отправлять запросы из разных источников на те же серверы, что и остальная часть расширения. До Chrome 13 контентный скрипт не мог напрямую делать запросы; вместо этого он должен был отправить сообщение своему родительскому расширению с просьбой, чтобы расширение сделало запрос между источниками.

Подойду к делу. Вам просто нужно сделать XmlHttpRequest для вашего домена из вашего расширения (контентный скрипт или фоновую страницу) и дождаться ответа.

На сервере

Прочитайте запрос и сессионный cookie. Если сеанс действителен, отправьте правильный ответ, иначе отправьте код ошибки. 401 или что-нибудь еще.

У клиента

Если ответ правильный, отобразите его, в противном случае отобразите ссылку для входа, ведущую на страницу входа на вашем веб-сайте.

Как это работает:

Будет работать, если в браузере пользователя включены файлы cookie. Каждый раз, когда пользователь входит на ваш веб-сайт, ваш сервер устанавливает файл cookie сеанса, который находится в браузере пользователя. Теперь при каждом запросе, который браузер отправляет на ваш домен, передается этот cookie. Этот файл cookie будет передаваться, даже если запрос поступил от расширения Google Chrome.

Протест

Убедитесь, что вы отображаете правильные подсказки для пользователя, указывающие, что они вошли в ваше приложение. Поскольку ваш пользовательский интерфейс будет в основном находиться внутри расширения, возможно, что пользователь может не знать о своем действительном сеансе с вашим веб-сайтом, и он может оставить активный сеанс без присмотра, который может быть нарушен, если пользователь обращается к нему из общедоступного интернет-киоска.

Ссылка

Вы можете взглянуть на аналогичную реализацию, которую я сделал с моим расширением здесь .

0 голосов
/ 02 сентября 2011

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

Если это ваш веб-сайт, вы сможете установить cookie-файл, который указывает, вошли ли они в систему. Затем определите эту сторону сервера при навигации по вашему сайту.

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

...