開啟Firebase登入驗證功能

  1. 首先,在主控台的畫面中,點擊「Authentication」。

  2. 點擊畫面上的「開始使用」,並點開「Sign-in method」。

  3. 點開「電子郵件/密碼」,把第一個按鈕開啟,並按「儲存」。

  4. 也點開「匿名」,把按鈕開啟,並按「儲存」


撰寫auth.dart

  1. brew_crew/lib下建立一個新資料夾services,並在其中新增auth.dart
    (完成應該後會跟下圖一樣)

  2. auth.dart中,先import我們之前已經安裝好的Firebase_auth Package

    1
    import 'package:firebase_auth/firebase_auth.dart';
  3. 接著,創建一個名為Auth的class

    1
    2
    3
    class Auth{
    //details...
    }
    • 其中,先新增一個名為_auth的FirebaseAuth物件

      1
      final FirebaseAuth _auth = FirebaseAuth.instance;
      1. FirebaseAuth是Firebase Authentication SDK的起始class,而透過FirebaseAuth.instance可以新增一個FirebaseAuth物件
      2. 在Flutter中,如果有變數、方法或物件的名稱前有_,則代表其有效範圍只限於該dart檔中。以_auth為例,它只能使用於auth.dart
      3. 在變數前加上了final,就可以讓變數在被賦予值之後,內容就不可再做改變
    • 接著,新增一個名為signInAnon()的非同步函式

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      Future signInAnon() async{
      // 用try&catch去抓錯誤資訊
      try{

      // 利用result變數去儲存回傳之用戶憑證(UserCredential)
      UserCredential result = await _auth.signInAnonymously();
      // 將用戶資訊儲存在user變數中
      User user = result.user;
      //回傳user
      return user;

      }catch(e){

      // print出錯誤訊息
      print(e.toString());
      //回傳null
      return null;

      }
      }
      1. Futureasyncawait用法之介紹,可以參考Dart23:異步處理
      2. signInAnonymously() : 將_auth註冊成一個匿名用戶,回傳之用戶憑證則儲存在UserCredential中,而此過程是非同步的(也就是需要用到await)
      3. UserCredential : 可以儲存用戶憑證的物件
      4. User : 可以儲存用戶帳密的物件

完整程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import 'package:firebase_auth/firebase_auth.dart';

class Auth{

final FirebaseAuth _auth = FirebaseAuth.instance;

//sign in anonymously
Future signInAnon() async{
try{
UserCredential result = await _auth.signInAnonymously();
User user = result.user;
return user;
}catch(e){
print(e.toString());
return null;
}
}

}

結語

我們目前已經建立好Anonymous User(匿名用戶)的連接設定了,下次就會開始設計匿名登入介面嘍!


補充資料

  1. FirebaseAuth class官方文件
  2. signInAnonymously method官方文件
  3. UserCredential class官方文件
  4. User class官方文件