Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > авторизация на сайте через расшгирение


Автор: vokkin 6.9.2019, 09:58
Добрый день! Делаю расширение браузера Google Chrome. Не могу справиться с авторизацией. Нужно что бы было так: 

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

Как это можно сделать? 

Если кто поделиться куском кода буду безумно признателен )))  

Автор: od0201 10.9.2019, 01:34
1 способ
определить погрузились ли элементы и заполнить их, например
$('input#username).val('[email protected]')
и отправить форму
$("button#other").click()

2 способ 
через HTTP Сниффер посмотреть куда и что отсылает форма и 
через chrome.runtime.onMessage.addListener в background.js функцией fetch отсылаем такую же форму
что такое обещание и асинхронность знать обязательно.

пример кода для второго способа, кода было много, поубирал лишнее
Код

// main.js 
      API_SERW('APIname=getPsw&idf='+newIdf) // получаю со своего сервера пароль, логин у меня передается в адресной строке
      .then(response=>get("/member.php",{method: 'POST', body: {ID:newIdf,Passw:response.psw}}))  
      .catch(error => {console.error(error)})

function get(a,o){  // данной функцией я делаю не только авторизацию но и все GET и POST запросы на сайте
  return new Promise (function (resolve,reject){
    chrome.runtime.sendMessage({script: "xxx", argument: a, options: o}, function(response) {
      if (response==''){
        reject(response);                        
      }
      else {            
        resolve(response);
      }        
    });
  });
}


Код

// background.js
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.script) {
            var url;
            var options={};
            if (request.options){options=request.options}
            if (request.script == 'xxx'){
                url = "https://www.XXXXXXX.com/" +request.argument;
            } 
      if (options.body){
        var formData  = new FormData();
        for(var name in options.body) {
          formData.append(name, options.body[name]);
        }
        options={method: options.method, body: formData}
      }
      
      fetch(url,options)
        .then(response => response.text())
                .then(price =>sendResponse(price))
        .catch(err => sendResponse(err))
      return true;  // Will respond asynchronously.

    }
  });

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)