КОНТЕКСТ - Я создаю расширение 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 должен загружаться в новом всплывающем окне, даже если пользователь еще не вошел в систему. Ниже приведено изображение того, что я ищу. Пользователь мог выбрать адрес электронной почты из своих учетных записей.
Я знаю API chrome .window и chrome .tabs, но прежде чем копать Я просто хотел убедиться, можно ли настроить это поведение потока аутентификации с помощью chromeAPI. Если не код, то идеи, направления или небольшая дорожная карта должны быть достаточными.
Может быть, правильный вопрос: нужно ли мне перехватывать вновь созданную вкладку gmailUI-login-tab и как-то переходить в новое окно с помощью предустановленный размер?