Firebase аутентификация не работает из мессенджера Facebook на iphone - PullRequest
0 голосов
/ 20 февраля 2019

на Android все работает нормально.Но с iPhone, когда мой сайт открывается через встроенный браузер мессенджеров Facebook, он не позволяет пользователю войти в систему.

При использовании AngularFireAuth мой код был следующим:

glogin() {
    this.socialLogin(new auth.GoogleAuthProvider());
  }

socialLogin(provider) {
    this.afAuth.auth.signInWithPopup(provider)
      .then((user) => {
        this.loading = true;
        console.log('Sign in with google: ', user);
      }).catch(() => {
      // Todo - something went wrong
    });
  }

Я открываюссылку через мессенджер fb, нажмите кнопку входа в систему с помощью кнопки Google (которая вызывает glogin () в приведенном выше примере кода), и она просто показывает пустой экран (но все еще на моем тестовом веб-сайте).Не спрашивает меня, с какой учетной записью Gmail я хочу войти или что-то еще.Страница, на которую он идет, имеет следующий URL:

https://MY_PROJECT_ID.firebaseapp.com/__/auth/handler?state=AMbdmDm9Cks7LNtcBWVNFTRJ_NKOw2TwSuEG0EX1u0YGpffYFhUdpzuT9GDQgKgTJFv8tOHNefO31BZMv2QDY_6QOIh90u0nJ2DP-xkxh9znGp624dDfCPFixxSNMhh6FWnlDywktHfasAmKviDhYs5ECZlGqoZ1nakad9eclnoeBsc_roh8z8hSYpW0hBNsAm67z2QbVGOblbIP0yiced8fYyMalE4C4MhtJSWEPOpSa3Pj2fa1J4JBnQk7Iq9POHbfQdwcJ4n1p1kRbitSbZiExkGGZNUrRW7vXFI1gF2tlMoNzvTG_VO76498CYV_WTcIUSphOgKhLg&code=4/9wBIt9xh3e13xl0d8rfrxmuonTzApq_8VeBgeXQbtx4nwepp81OHP74865RaMTU0NN7SXoHebg4VWwLijmpkDvU&scope=openid+email+profile+https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&authuser=0&session_state=22688194c8db3806e3fd0cf4d8792ea29e98560d..e46b&prompt=none

При использовании google login native sdk с firebase мой код ts был следующим:

ngOnInit() {
    gapi.load('auth2', () => {
      gapi.auth2.init({client_id: 'MY-CLIENT-ID'});
    });
}

googleSignin() {
    let auth2 = gapi.auth2.getAuthInstance();
    auth2.signIn().then(data => {
      console.log('something worked', data);
      this.onSignIn(data);
    }).catch(err => {
      console.log('error: ', err);
    });
  }

onSignIn(googleUser) {
    console.log('Google Auth Response', googleUser);
    // We need to register an Observer on Firebase Auth to make sure auth is initialized.
    var unsubscribe = firebase.auth().onAuthStateChanged(function(firebaseUser) {
      unsubscribe();

        // Build Firebase credential with the Google ID token.
        var credential = firebase.auth.GoogleAuthProvider.credential(
          googleUser.getAuthResponse().id_token);
        // Sign in with credential from the Google user.
        firebase.auth().signInAndRetrieveDataWithCredential(credential).catch(function(error) {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
    });
  }

и мой htmlбыло:

<div class="g-signin2" data-onsuccess="onSignIn" (click)="googleSignin()"></div>

когда я нажимаю на вышеуказанную кнопку, он просто переходит на пустую страницу с URL-адресом: https://accounts.google.com/o/oauth2/auth?redirect_uri=storagerelay%3A%2F%2Fhttps%2FMY_PROJECT_ID.firebaseapp.com%3Fid%3Dauth84260&response_type=permission%20id_token&scope=email%20profile%20openid&openid.realm=&client_id=386310437429-kpslqalubgfj2bqg6n9fhhs1295ditsa.apps.googleusercontent.com&ss_domain=https%3A%2F%2FMY_PROJECT_ID.firebaseapp.com&fetch_basic_profile=true&gsiwebsdk=2

Как мне войти в систему, чтобы работать при открытии через Facebook вприложение на iPhone?

...