У нас есть приложение Angular 6, которое пытается использовать oAuth2 для входа в систему с помощью наших учетных записей Google. Мы используем следующий код:
googleLogin() {
// the provider as well as different things the system needs to login the user
const provider = new firebase.auth.GoogleAuthProvider().addScope(
'https://www.googleapis.com/auth/plus.login '
+ 'https://www.googleapis.com/auth/userinfo.email '
+ 'profile '
+ 'email '
+ 'https://www.googleapis.com/auth/cloud-language '
+ ''
);
return this.oAuthLogin(provider);
}
private oAuthLogin(provider) {
return this.afAuth.auth.signInWithPopup(provider)
.then((credential) => {
return this.setUserData(credential.user)
.then(() => {
return credential;
})
.catch((error) => {
console.log('An error occured: ' + error);
throw error;
});
}).catch(error => this.handleSignInError(error));
}
this.afAuth.auth является экземпляром FirestoreAuth.
Предполагается, что это вызовет всплывающее окно, которое позволяет пользователю выбрать учетную запись Google, с помощью которой можно войти в систему. Но происходит то, что всплывающее окно появляется, и до того, как у него появляется шанс выполнить рендеринг, выдается ошибка, и другое появляется всплывающее окно с сообщением «веб-страница, которую вы просматриваете, пытается закрыть окно». Ошибка обрабатывается в блоке catch выше и имеет следующие свойства:
Code: “auth/popup-closed-by-user”
Message: “The popup has been closed by the user before finalizing the operation”
На самом деле не пользователь пытается закрыть всплывающее окно, а что-то другое.
Это происходит только в нашей локальной среде при запуске, т.е. 11. Когда мы работаем в Chrome, этого не происходит. Когда мы запускаем его в нашей среде разработки и разработки, то есть в 11, это не происходит.
Кто-нибудь знает, что происходит и как это исправить? Спасибо.