Firebase实施谷歌和Facebook登录同一页面

时间:2017-10-18 11:37:33

标签: firebase firebase-authentication

我正在尝试在同一页面上实施谷歌和Facebook注册,但我无法做到这一点我做了很多谷歌,但无法找到答案。

有人可以提供我在同一页面上实施的google和facebook注册样本吗?

4 个答案:

答案 0 :(得分:1)

我建议使用FirebaseUI。您可以参考https://github.com/firebase/firebaseui-web/tree/master/demo/ 它可以同时为您处理所有边缘情况,使用起来很简单。

还要检查Firebase仪表板的身份验证设置,因为在某些情况下,例如您使用Google登录,然后使用同一封电子邮件使用Facebook登录。要合并两个帐户,都需要帐户关联。

答案 1 :(得分:0)

这是我们几个月前解决的复杂问题。 您必须根据人们注册的不同凭据合并您的帐户。您可以将已从Google / Facebook获得的凭据与已登录的帐户合并。如果您不打算提供除谷歌/ Facebook以外的任何其他选择登录,则只有一个选项可以允许从控制台使用相同电子邮件地址的多个帐户。

答案 2 :(得分:0)

此示例适用于Angular / Ionic。 HTML中需要两个按钮:

<button ion-button outline (click)="loginWithFacebook()">
    <svg ngClass="svgIcon-use" width="25" height="25" viewBox="0 0 25 25">
      <path d="M21 12.646C21 7.65 16.97 3.6 12 3.6s-9 4.05-9 9.046a9.026 9.026 0 0 0 7.59 8.924v-6.376H8.395V12.64h2.193v-1.88c0-2.186 1.328-3.375 3.267-3.375.93 0 1.728.07 1.96.1V9.77H14.47c-1.055 0-1.26.503-1.26 1.242v1.63h2.517l-.33 2.554H13.21V21.6c4.398-.597 7.79-4.373 7.79-8.954"></path>
    </svg>
  Facebook
</button>

<button ion-button outline (click)="loginWithGoogle()">
    <svg ngClass="svgIcon-use" width="25" height="25" viewBox="0 0 25 25">
      <g fill="none" fill-rule="evenodd">
        <path d="M20.66 12.693c0-.603-.054-1.182-.155-1.738H12.5v3.287h4.575a3.91 3.91 0 0 1-1.697 2.566v2.133h2.747c1.608-1.48 2.535-3.65 2.535-6.24z"
          fill="#4285F4"></path>
        <path d="M12.5 21c2.295 0 4.22-.76 5.625-2.06l-2.747-2.132c-.76.51-1.734.81-2.878.81-2.214 0-4.088-1.494-4.756-3.503h-2.84v2.202A8.498 8.498 0 0 0 12.5 21z"
          fill="#34A853"></path>
        <path d="M7.744 14.115c-.17-.51-.267-1.055-.267-1.615s.097-1.105.267-1.615V8.683h-2.84A8.488 8.488 0 0 0 4 12.5c0 1.372.328 2.67.904 3.817l2.84-2.202z"
          fill="#FBBC05"></path>
        <path d="M12.5 7.38c1.248 0 2.368.43 3.25 1.272l2.437-2.438C16.715 4.842 14.79 4 12.5 4a8.497 8.497 0 0 0-7.596 4.683l2.84 2.202c.668-2.01 2.542-3.504 4.756-3.504z"
          fill="#EA4335"></path>
      </g>
    </svg>
  Google
</button>

Login.ts

loginWithFacebook(): void {
    this.afAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider())
        .then(_ => this.navCtrl.setRoot('HomePage'))
        .catch(error => alert(error));
}

loginWithGoogle(): void {
    let provider = new firebase.auth.GoogleAuthProvider();
    provider.addScope('https://www.googleapis.com/auth/plus.login');
    return this.afAuth.auth.signInWithPopup(provider)
        .then(_ => this.navCtrl.setRoot('HomePage'))
        .catch((error) => alert(error));

}

答案 3 :(得分:0)

我建议使用FirebaseUI。它可以为您处理所有边缘情况,并且使用起来非常简单。在某些情况下,例如您使用Google登录,然后使用相同的电子邮件登录Facebook。合并两个帐户需要帐户链接。