使用 Facebook 输入注册 Cloud Firestore

To Register Cloud Firestore with Facebook Input

我可以使用 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);
  }

User.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":""
    });
    
  }

FacebookIleGiris()方法用Facebook登录时,要启动的函数为启动函数,错误已解决

facebookIleGiris() async {
    print("facebook ile giriş başladi");
    FacebookLoginResult _result = await _facebookLogin.logIn(['email']);
    switch(_result.status){
      case FacebookLoginStatus.loggedIn:
       var a= await  _loginWithFacebook(_result);
       return a;
      break;
      case FacebookLoginStatus.cancelledByUser:
      print("kullanici çıktı");
      break;
      case FacebookLoginStatus.error:
        print("error");
        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} şimdi giriş yaptı');
    print('${result.user.photoUrl}  ');
    print('${result.user.email}   ');
    print(result.runtimeType);
    return _kullaniciOlustur(result.user);