如何在Cloud_firestore中将Google服务帐户用于Flutter?

时间:2019-07-17 14:01:48

标签: flutter google-cloud-firestore firebase-authentication

我正在创建一个需要在Google Firestore中存储和导出一些信息的应用程序。我有一个具有相应证书的google服务帐户,并且使用Node.js制作的导出程序可以按预期工作。另一方面,对于需要存储信息的应用程序,我使用flutter和最新的cloud_firestore插件,但是找不到关于如何在flutter插件中使用google服务帐户证书的任何文档。

cloud_firestore插件似乎没有处理身份验证的任何机制,firebase_auth插件似乎不支持google服务帐户。

有人可以在Firestore和Flutter上使用Google服务帐户吗?

2 个答案:

答案 0 :(得分:0)

如果评论正确,这是我的答案。

这是我使用的AuthService。

这将处理google登录。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

class AuthService {
  final GoogleSignIn _googleSignIn = GoogleSignIn();
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Future<FirebaseUser> signIn(String email, String password) async {
    FirebaseUser u = await _auth.signInWithEmailAndPassword(
        email: email, password: password);
    updateUserData(u);
    return u;
  }

  Future<FirebaseUser> signInAnon() async {
    FirebaseUser user = await _auth.signInAnonymously();
    updateUserData(user);
    return user;
  }

  void signOut() {
    _auth.signOut();
  }

  Future<FirebaseUser> googleSignIn() async {
    try {
      GoogleSignInAccount googleSignInAccount = await _googleSignIn.signIn();
      GoogleSignInAuthentication googleAuth =
          await googleSignInAccount.authentication;

      final AuthCredential credential = GoogleAuthProvider.getCredential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );

      FirebaseUser user = await _auth.signInWithCredential(credential);
      updateUserData(user);

      return Future.value(user);
    } catch (error) {
      print(error);
      return Future.error(error);
    }
  }
}

您可以在pupspec中导入

  firebase_core: ^0.4.0
  firebase_auth: ^0.11.0
  cloud_firestore: ^0.11.0+1
  google_sign_in: ^4.0.1+3

答案 1 :(得分:0)

在您的Firebase项目控制台中,您可以在设置->服务帐户(设置/服务帐户/ adminsdk)中添加Google服务帐户。 您还需要在身份验证中声明Google为提供者->提供者 此时,您需要在flutter项目中导入Firebase控制台的设置部分中提供的新版本的google-service.json文件。