flutter_auth_ui_sample

はじめに

このパッケージは、flutter_auth_uiを使用した、メールリンク認証のサンプルアプリです。 ※事前準備については書いてませんが、電話認証もできます。

使い方-Firebase準備

iOS,Android共通

  1. Firebaseプロジェクトを作成する
  2. メールリンク認証を有効にする
  3. Dynamic Linksを作成する
    1. URL接頭辞を作成する
    2. ダイナミックリンクを作成する

iOS固有

  1. Firebaseにアプリを追加する(説明省略)
  2. GoogleService-Info.plistをアプリ側に組み込む(説明省略)
  3. iOSアプリの設定で「App Store ID」、「チームID」を設定する(AppStoreConnectにアプリを作成しておく必要あり)
    1. App Store IDの取得元:AppStoreConnect > 該当のアプリ > 一般 > App情報
    2. チームIDの取得元:Certificates, Identifiers & Profiles > 該当アプリのIdentifier
  4. Dynamic Linksの「iOS用のリンク動作の定義」を設定する

Android固有

  1. Firebaseにアプリを追加する(説明省略)
  2. google-services.jsonをアプリ側に組み込む(説明省略)
  3. Dynamic Linksの「Android用のリンク動作の定義」を設定する

使い方-プログラム

iOS, Android共通

  1. main.dart内のhandleURLを「ダイナミック リンクの設定」の「ディープリンクURL」の値にする

iOS固有

  1. XCodeでAssociated Domainsを設定する

Android固有

  1. main.dart内のandroidPackageNameを設定する

注意点 - Androidを使う上で

リポジトリには反映済みだが、以下はポイントとなるので、抑えておく。

1. MainActivity.ktは以下のようにして、アプリ起動時にFlutterAuthUiPlugin.catchEmailLink()を呼ぶようにする

package com.example.flutter_auth_ui_sample

import io.flutter.embedding.android.FlutterActivity

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.dr1009.app.flutter_auth_ui.FlutterAuthUiPlugin;

class MainActivity : FlutterActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);

        // check intent
        FlutterAuthUiPlugin.catchEmailLink(this, getIntent());
    }

    
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent);

        // check intent
        FlutterAuthUiPlugin.catchEmailLink(this, intent);
    }
}

2. AndroidManifest.xmlに記載の、launchModesingleInstanceにして、メールリンク認証の場合も、確実にFlutterAuthUi.startUi()からリターンするようにする。