загрузить gmailLogin GUI в новом окне вместо новой вкладки - PullRequest
0 голосов
/ 18 июня 2020

КОНТЕКСТ - Я создаю расширение chrome, и мне нужно, чтобы пользователь вошел в систему со своим идентификатором Gmail. Пользователь инициирует процесс, нажав кнопку «Войти через Gmail».

index. php

.....
    <head>
         <script type="text/javascript" src="oauth.js"></script>
    </head>
    <body>
         <button>Login with Gmail</button>
    </body>
......

oauth. js

window.onload = function() {
  document.querySelector('button').addEventListener('click', function() {
    chrome.identity.getAuthToken({interactive: true}, function(token) {
      var init = {
        method: 'GET', async: true, 
        headers: { Authorization: 'Bearer ' + token,'Content-Type': 'application/json'},
        'contentType': 'json'
      };
      fetch( 'https://www.googleapis.com/gmail/v1/users/me/profile', init)
          .then((response) => response.json())
          .then(function(data) {
            console.log(data)
            //do other stuff
          });
    });
  });
};

манифест. json

{
  "name": "OAuth Tutorial Gamil access",
  "version": "1.0",
  "description": "Uses OAuth to connect to the app using gmail login.",
  "manifest_version": 2,
  "browser_action": {
    "default_title": "app access with gmail.com"
  },
  "permissions": [
    "identity"
  ],
  "background": {
    "scripts": [
      "background.js"
    ],
    "persistent": false
  },
  "oauth2": {
    "client_id": "123457895487-g2b75haovqi44r6efjhco8jgf3m9au1o.apps.googleusercontent.com",
    "scopes":["https://www.googleapis.com/auth/gmail.readonly"]
  },
  "key": "oiflepeajcadnmfnfmhkaxxxxxxxpia"
}

фон. js

chrome.browserAction.onClicked.addListener(function() {
  chrome.tabs.create({url: 'index.html'});
});

РЕЗЮМЕ ПРОБЛЕМЫ - Если пользователь уже вошел в систему, то gmailUI отобразится в новом окне, что хорошо, НО если пользователь еще не вошел в систему, тогда gmailUI загрузится в новой вкладке . Мне не нравится несогласованность этого потока аутентификации. В идеале gmailUI должен загружаться в новом всплывающем окне, даже если пользователь еще не вошел в систему. Ниже приведено изображение того, что я ищу. Пользователь мог выбрать адрес электронной почты из своих учетных записей.

enter image description here

Я знаю API chrome .window и chrome .tabs, но прежде чем копать Я просто хотел убедиться, можно ли настроить это поведение потока аутентификации с помощью chromeAPI. Если не код, то идеи, направления или небольшая дорожная карта должны быть достаточными.

Может быть, правильный вопрос: нужно ли мне перехватывать вновь созданную вкладку gmailUI-login-tab и как-то переходить в новое окно с помощью предустановленный размер?

...