我正在创建一个需要在Google Firestore中存储和导出一些信息的应用程序。我有一个具有相应证书的google服务帐户,并且使用Node.js制作的导出程序可以按预期工作。另一方面,对于需要存储信息的应用程序,我使用flutter和最新的cloud_firestore插件,但是找不到关于如何在flutter插件中使用google服务帐户证书的任何文档。
cloud_firestore插件似乎没有处理身份验证的任何机制,firebase_auth插件似乎不支持google服务帐户。
有人可以在Firestore和Flutter上使用Google服务帐户吗?
答案 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文件。