Когда пользователь попадает на страницу, загружается и инициируется аутентификация Google. Google Sign-in API предоставляет функцию прослушивания, которая срабатывает при изменении пользователя (GoogleAuth.currentUser.listen()). Ожидаемое поведение функции, которую я хочу реализовать, включает в себя наблюдение за пользователями, входящими в систему Gmail на других вкладках браузера.
const userChanged = user => {
if (user) {
console.log('CHANGED TO USER: ', user);
}
};
const loadGoogleAuth = () => {
window.gapi.load('auth2', () => {
const gapiAuth = window.gapi.auth2;
gapiAuth.init({
client_id: '<YOUR-CLIENT-ID>.apps.googleusercontent.com',
cookie_policy: 'none', //my hunch is this could be affecting listener capabilities?
scope: 'profile email openid',
});
const authInstance = gapiAuth.getAuthInstance();
const element = document.getElementById('googleSignIn');
authInstance.attachClickHandler(
element,
{},
googleUser => {
console.log(`Signed in: ${googleUser.getBasicProfile().getName()}`);
},
error => {
console.log('Sign-in error', error);
}
);
authInstance.currentUser.listen(userChanged);
});
};
const withLifeCycles = lifecycle({
componentDidMount() {
if (window.gapi) {
loadGoogleAuth();
}
},
});
Это работает, но только для первого Gmail, в который входит пользователь, или Gmail, который уже вошел в систему до того, как пользователь попадет на страницу. Другими словами, если я войду в Gmail A, он обнаружит изменение пользователя, но не обнаружит Gmail B, если я выйду из Gmail A и затем войду в Gmail B. Однако впоследствии он будет обнаруживать повторные входы в систему для Gmail A, а не для каких-либо других адресов Gmail. Возможно ли, чтобы функция прослушивателя обнаруживала входы на любой адрес gmail или только для первого обнаруженного gmail?