如何在Flutter中使用Firebase Admin SDK?

我正在创建一个应该可以管理用户访问权限的应用程序。管理员应具有创建,删除和编辑用户帐户的权限。

我正在使用Firebase创建用户帐户。

现在,每个用户都可以创建,编辑和删除他们的帐户,但是问题是管理员应该这样做,而不仅仅是用户。

import 'dart:async';

import 'package:firebase_auth/firebase_auth.dart';

import 'package:flutter/services.dart';

import 'package:google_sign_in/google_sign_in.dart';

class UserLoader {

final FirebaseAuth _auth = FirebaseAuth.instance;

final GoogleSignIn googleSIgnIn = new GoogleSignIn();

static final UserLoader _singleton = new UserLoader._internal();

FirebaseUser user;

factory UserLoader() {

return _singleton;

}

UserLoader._internal();

Future<FirebaseUser> signInWithEmailAndPassword(email, password) async {

if (user != null) return user;

_signInAnonymously().then((value) {

if (value != null) {

user = value;

}

}).catchError((e) {

return null;

});

if (user == null) {

FirebaseUser user = await _auth.signInWithEmailAndPassword(

email: email, password: password).catchError(

(onError)

{

print(onError);

});

return user;

} else {

return null;

}

}

Future<FirebaseUser> signInWithGoogle() async {

if (user != null) return user;

_signInAnonymously().then((value) {

if (value != null) {

user = value;

}

}).catchError((e) {

print(e.toString());

});

if (user == null) {

GoogleSignInAccount googleSignInAccount = await googleSIgnIn.signIn();

GoogleSignInAuthentication gSA = await googleSignInAccount.authentication;

FirebaseUser user = await _auth.signInWithGoogle(

idToken: gSA.idToken, accessToken: gSA.accessToken);

return user;

} else {

return null;

}

}

Future<FirebaseUser> _signInAnonymously() async {

if (user != null) return user;

user = await _auth.signInAnonymously();

return user;

}

Future signOut() async {

await _auth.signOut();

await googleSIgnIn.signOut();

user = null;

}

Future changePassword(email) async{

await _auth.sendPasswordResetEmail(email: email);

}

Future createNewUser(email){

_auth.createUserWithEmailAndPassword(email: email, password: "new_pass");

}

Future deleteUser(FirebaseUser firebaseUser){

firebaseUser.delete();

}

}

我认为Firebase Admin应该可以解决问题,但我不确定。

回答:

Firebase Admin SDK仅可用于受信任的环境,例如您的开发计算机,您控制的服务器或Firebase的Cloud

Functions。(有意地)不适用于客户端应用程序,例如在Android或iOS上部署的客户端应用程序,无论是使用本机代码构建的应用程序还是通过Flutter构建的应用程序。

唯一的选择是在受信任的环境中使用Admin

SDK来实现所需的功能,并将端点公开给Flutter应用。如果最终这样做,请确保保护对端点的访问,以便只有应用程序的管理员用户才能访问它。有关如何使用Cloud

Functions保护访问的示例,请参阅functions-samples

repo中的此示例。

以上是 如何在Flutter中使用Firebase Admin SDK? 的全部内容, 来源链接: utcz.com/qa/419896.html

回到顶部