我可以使用 Facebook 登录,但无法注册 Cloud Firestore。我如何获得建议的资源?我可以使用 Google 登录,但在这里我遇到了问题。我已经分享了下面的代码。我没有收到错误。该信息来自 Facebook,但单击 try catch 过程中的按钮:
Future<Kullanici> facebookIleGiris() async {
print("Login wiht facebook");
FacebookLoginResult _result = await _facebookLogin.logIn(['email']);
switch(_result.status){
case FacebookLoginStatus.cancelledByUser:
print("user logout");
break;
case FacebookLoginStatus.error:
print("error");
break;
case FacebookLoginStatus.loggedIn:
await _loginWithFacebook(_result);
break;
}
}
_loginWithFacebook(FacebookLoginResult _result) async {
FacebookAccessToken accessToken = _result.accessToken;
AuthCredential _credential =
FacebookAuthProvider.getCredential(accessToken: accessToken.token);
AuthResult result = await _firebaseAuth.signInWithCredential(_credential);
print('${result.user.uid} ');
print('${result.user.displayName} now login');
print('${result.user.email} ');
print('${result.user.photoUrl} ');
print('${result.user.phoneNumber}');
return _kullaniciOlustur(result.user);
按钮点击
void _faceIleGiris() async {
print("user clicked");
var _yetkilendirmeServisi = Provider.of<YetkilendirmeServisi>(context, listen: false);
print("user 2. step");
try {
Kullanici kullanici = await _yetkilendirmeServisi.facebookIleGiris();
print("kullanici kontrole başladi ${kullanici.email}");
if (kullanici != null) {
print(" ${kullanici.email}");
Kullanici fireStoreKullanici = await FirestoreServisi().kullaniciGetir(kullanici.id);
if (fireStoreKullanici == null) {
print("user created ${kullanici.email}");
FirestoreServisi().kullaniciOlustur(
id: kullanici.id,
email: kullanici.email,
kullaniciAdi: kullanici.userName,
fotoUrl: kullanici.fotoUrl
);
print(" ${kullanici.email}");
print("the end");
}
}
}
catch(ex){
print(ex);
}
用户.dart
import 'package:flutter/cupertino.d art';
import 'package:cloud_firestore/cloud_firestore. dart';
import 'package:firebase_auth/firebase_auth. dart';
class Kullanici{
final String id;
final String userName;
final String email;
final String fotoUrl;
Kullanici({@required this.id, this.userName, this.email, this.fotoUrl});
factory Kullanici.firebasedenUret(FirebaseUser user){
return Kullanici(id:user.uid,
userName: user.displayName,
email: user.email,
fotoUrl: user.photoUrl
);
}
factory Kullanici.dokumandanuret(DocumentSnapshot doc){
return Kullanici(
id: doc.documentID,
userName: doc['kullaniciAdi'],
email: doc['email'],
fotoUrl: doc['fotoUrl']
);
}
}
创建用户方法:
//Kullaniciolustur
class FirestoreServisi{
final Firestore _firestore= Firestore.instance;
Future<void> kullaniciOlustur({id,email,kullaniciAdi, fotoUrl=""}) async {
await _firestore.collection("kullanicilar").document(id).setData({
"kullaniciAdi":kullaniciAdi,
"email":email,
"fotoUrl":fotoUrl,
"dTarih":""
});
}