使用提供程序的Flutter中的Firebase电话身份验证

时间:2020-01-07 13:29:29

标签: firebase flutter firebase-authentication bloc flutter-provider

我刚刚找到了用于状态管理的提供商,并且非常想知道如何向 Provider 隐含 Firebase Phone Auth 。目前,我正在使用有状态的Widget进行状态管理及其biolerplate,但是我的电话身份验证正在运行。

我需要帮助来了解如何使用提供程序来达到相同的目的。

任何教程,参考资料或实现都可以。

当前身份验证提供者类别:

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/services.dart';
import 'package:flutter/services.dart';
import 'package:ninja_firebase_test1/models/user.dart';

class AuthService{

 final FirebaseAuth _auth = FirebaseAuth.instance;

 //create user object based on FireBaseUser
 User _userFromFirebaseUser(FirebaseUser user){
   return user != null ? User(uid: user.uid):null;
 }

 //auth change user stream
 Stream<User> get user {
  return _auth.onAuthStateChanged.map(_userFromFirebaseUser); 
 }


 // Verify Phone Number 
 // Signup with phone Function, return user id 
 // 




 // sign out
 Future signOut() async {
  try{
    return await _auth.signOut();
  }  catch(e){
    print(e.toString());
    return null;
  }
}

1 个答案:

答案 0 :(得分:0)

import 'package:firebase_auth/firebase_auth.dart';

class AuthService{

 final FirebaseAuth _auth = FirebaseAuth.instance; 

  //create user object based on FireBaseUser

 User _userFromFirebaseUser(FirebaseUser user){
  return user != null ? User(uid: user.uid):null;
 }

 // define _auth.verifyPhoneNumber() here

 Future signInWithPhoneNumber(String smsCode) async {
  try{ 
    final AuthCredential credential = PhoneAuthProvider.getCredential(
    verificationId: verificationId,
    smsCode: smsCode,
   );
   AuthResult result = await _auth.signInWithCredential(credential);
   FirebaseUser user= result.user;
   return _userFromFirebaseUser(user);
  } catch (e){
    print(e.toString());
    return null;
  }
}