У меня есть ионное приложение, которое требует входа в Google.код выглядит следующим образом:
import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app';
import AuthProvider = firebase.auth.AuthProvider;
constructor(
private storage: Storage,
private plt: Platform,
private afAuth: AngularFireAuth
) {
afAuth.authState.subscribe(user => {
this.user = user;
});
this.plt.ready().then(() => this.checkToken());
}
private oauthSignIn(provider: AuthProvider) {
if (!(<any>window).cordova) {
return this.afAuth.auth.signInWithPopup(provider).then(res => {
this.storage
.set(TOKEN_KEY, res.user.refreshToken)
.then(result => {
this.authenticationState.next(true);
});
});
} else {
return this.afAuth.auth.signInWithRedirect(provider).then(() => {
return this.afAuth.auth
.getRedirectResult()
.then(result => {
console.log(result);
const that = this;
this.storage
.set(TOKEN_KEY, result.user.refreshToken)
.then(res => {
that.authenticationState.next(true);
});
})
.catch(function(error) {
alert(error.message);
});
});
}
}
здесь, signInWithPopup
работает, но не signInWithRedirect
.
Я проверил это в браузере, и я получаю информацию о пользователе и все.
Но нет информации о последней else
функциональности, которую я отдельно проверил.
Но реальная проблема в том, что оба метода не перенаправляют на страницу приложения после получения разрешения.
Второй открывает браузер в мобильном телефоне после нажатия на кнопку входа.Но перенаправляйте обратно в браузер, а не в приложение.
То же самое касается и первого оператора if.
Пожалуйста, помогите мне решить эту проблему.
Если большенужны подробности, я предоставлю их для вас.