выпуск
Я создал приложение на Android, которое хочу протестировать на iOS, но не могу заставить работать Google Firebase.Когда я нажимаю кнопку входа, приложение полностью пропускает вход и даже не запрашивает мой логин в Google.
Ошибки
Когда я запускаю приложение, я получаю следующееошибки:
Exception: MissingPluginException(No implementation found for method Query#addSnapshotListener on channel plugins.flutter.io/cloud_firestore)
flutter: MissingPluginException(No implementation found for method init on channel plugins.flutter.io/google_sign_in)
Пробовал до сих пор
Код
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:rxdart/rxdart.dart';
class AuthService {
// Firebase Variables
final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;
final Firestore _db = Firestore.instance;
// RXDart Variables
Observable<FirebaseUser> user; // firebase user
Observable<Map<String, dynamic>> profile; // custom user data in Firestore
PublishSubject loading = PublishSubject();
AuthService() {
user = Observable(_auth.onAuthStateChanged);
profile = user.switchMap((FirebaseUser u) {
if (u != null) {
print(_db
.collection('users')
.document(u.uid)
.snapshots()
.map((snap) => snap.data));
return null;
} else {
return Observable.just({});
}
});
}
Future<FirebaseUser> googleSignIn() async {
try {
loading.add(true);
GoogleSignInAccount googleSignInAccount = await _googleSignIn.signIn();
GoogleSignInAuthentication googleAuth =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final FirebaseUser user =
(await _auth.signInWithCredential(credential)).user;
updateUserData(user);
loading.add(false);
return null; //user;
} catch (error) {
print(error.toString());
return null;
}
}
void updateUserData(FirebaseUser user) async {
DocumentReference ref = _db.collection('users').document(user.email);
CollectionReference refPasswordCollection =
_db.collection('users').document(user.email).collection('Passwords');
CollectionReference refCategoriesCollection =
_db.collection('users').document(user.email).collection('Categories');
refPasswordCollection.buildArguments();
refCategoriesCollection.buildArguments();
userDocSTRING = ref.documentID.toString();
userPassSTRING = refPasswordCollection.reference().id.toString();
userCatSTRING = refCategoriesCollection.reference().id.toString();
Firestore.instance
.collection('users')
.document(userDocSTRING.toString())
.collection(userCatSTRING.toString())
.document('All')
.setData({'Name': "All"});
ref.setData({
'uid': user.uid,
'email': user.email,
'photoURL': user.photoUrl,
'displayName': user.displayName,
}, merge: true);
}
Future<String> signOut() async {
try {
//BuildContext context;
_auth.signOut(); //.whenComplete(() => Navigator.pop(context, LoginPage));
return _auth.currentUser().toString();
} catch (e) {
return e.toString();
}
}
}
var userPassSTRING;
var userDocSTRING;
var userCatSTRING;
final AuthService authService = AuthService();