Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 设备上的离子Firebase身份验证_Ionic Framework_Firebase Authentication_Ionic4_Device - Fatal编程技术网

Ionic framework 设备上的离子Firebase身份验证

Ionic framework 设备上的离子Firebase身份验证,ionic-framework,firebase-authentication,ionic4,device,Ionic Framework,Firebase Authentication,Ionic4,Device,我希望使用Firebase身份验证。我正在使用,在浏览器中一切正常。然而,社交媒体登录在设备上不起作用。当我点击“谷歌登录”时,设备浏览器会出现,然后。。。什么也没发生 所以我的问题是:有没有什么工作方法可以让Firebase在使用Ionic的设备上进行身份验证?我不熟悉。它似乎是为了支持基于web的应用而构建的。爱奥尼亚需要Cordova插件来实现Facebook和谷歌登录功能。这些插件可以与Firebase身份验证一起使用 我有一个使用Firebase进行身份验证的回购协议。它没有内置Fac

我希望使用Firebase身份验证。我正在使用,在浏览器中一切正常。然而,社交媒体登录在设备上不起作用。当我点击“谷歌登录”时,设备浏览器会出现,然后。。。什么也没发生

所以我的问题是:有没有什么工作方法可以让Firebase在使用Ionic的设备上进行身份验证?

我不熟悉。它似乎是为了支持基于web的应用而构建的。爱奥尼亚需要Cordova插件来实现Facebook和谷歌登录功能。这些插件可以与Firebase身份验证一起使用

我有一个使用Firebase进行身份验证的回购协议。它没有内置Facebook或Google登录,但它确实提供了一种工作方法,可以让Firebase身份验证在使用Ionic的设备上工作

如果你决定克隆我的项目。。。按照Firebase web设置的步骤1和步骤2进行操作。然后按照说明复制web应用程序的配置对象,并将其粘贴到src\environments\environment.ts中(替换现有的Firebase配置对象)

一旦你有了Firebase email auth设置,你可以按照教程设置Facebook应用程序,并使用Cordova插件在你的Ionic应用程序中注册

一旦Facebook插件设置正确,您就可以使用它登录Firebase。您的代码类似于下面的代码示例(注意:这不是整个AuthenticationService类,只是Facebook特定的代码):


希望它有帮助

这里是Firebase的指南:但是,在我的情况下,它不起作用,因为cordova universal links插件已被弃用,并且存在一个bug,因此我可以在那时构建我的项目。以下是来自爱奥尼亚本身的指南:但它似乎不适用于浏览器,而且设置起来似乎更困难,因为您需要idToken和accessToken用于Google auth。
export const environment = {
   production: false,
   firebaseConfig: {
   apiKey: "AXXXXXBILN60aW-XXXXXXXXIZWeHkMDUVT-AQ7Y",
   authDomain: "fir-auth-test-XXXXX.firebaseapp.com",
   databaseURL: "https://fir-auth-test-XXXXX.firebaseio.com",
   projectId: "fir-auth-test-XXXXX",
   storageBucket: "fir-auth-test-XXXXX.appspot.com",
   messagingSenderId: "106XXXXXXX396",
   appId: "1:106XXXX87396:web:d384fXXXXXXXXd647bed31",
   measurementId: "G-XNXXXXXXB0"
  }
import { AngularFireAuth } from "@angular/fire/auth";
import { AngularFireDatabase, AngularFireObject } from "@angular/fire/database";
import * as firebase from "firebase/app";

import { Facebook, FacebookLoginResponse } from "@ionic-native/facebook/ngx";

@Injectable({
  providedIn: "root"
})
export class AuthenticationService {
  constructor(private afAuth: AngularFireAuth, private facebook: Facebook) {}

  loginWithFacebook(): void {
    this.facebook
      .login(["public_profile", "email"])
      .then(
        (res: FacebookLoginResponse) => {
          const facebookCredential_1 = firebase.auth.FacebookAuthProvider.credential(
            res.authResponse.accessToken
          );
          this.loginWithFirebase(facebookCredential_1).then(
            console.log('success');
          );
        },
        error => {
          console.log( JSON.stringify(error));
        }
      )
      .catch(error_1 => {
        console.log("Error ", error_1);
      });
   }

   async loginWithFirebase(credential: firebase.auth.AuthCredential) {
     return firebase.auth()
       .signInAndRetrieveDataWithCredential(credential)
       .then(response => {
          return response;
     })
    .catch(error => {
      console.log(JSON.stringify(error));
    });
}