Flutter で Supabase を使うときにソーシャルログイン(OAuth)まわりで考慮すべきこと
November 26, 2022
時間がかかっているものの開発は徐々に進んでいる様子です。あなたがこの記事を見るころには解決しているかもしれませんね。
TL;DR #
次の条件に該当する場合、こちらの ISSUE が解消されるまでは Flutter で Supabase の採用を見送ったほうが賢明かもしれません。
- Native Sign In · Issue #5 · supabase/supabase-flutter
- https://github.com/supabase/supabase-flutter/issues/5
条件 #
- ソーシャルログイン(e.g. Google ログイン、Apple ログイン、Facebook ログインなど)を使用する
- iOS アプリとして App Store で配布する
説明 #
Flutter x Firebase でソーシャルログインを実装した方は分かると思いますが、Firebase での SNS ログインは自分のアプリから離れることなく完結できます。
対して、Flutter x Supabase でのソーシャルログインはフローが微妙に異なります。SMS ログインを実行するとアプリから離れてブラウザ(Chrome や Safari など)が開き、そこで Google なりのログイン情報を入力し認証処理を実行します。
先の ISSUE である、Native Sign In(Native login)を実装してほしいという Feature request は、Supabase でもブラウザを用いない Firebase のログインフローにしてほしいというリクエストです。
ブラウザを使うと何が問題かというと、単純に UX が低下するだけでなく、これが原因となって App Store の審査に落ちてしまうと言う点です。これは ISSUE 内でも言及されています。
https://github.com/supabase/supabase-flutter/issues/5#issuecomment-1284531203
ちなみに ISSUE 内では、 Supabase を用いつつ自力でネイティブ OAuth サインインを実装するワークアラウンドも出てきます。しかしこれも Supabase のライブラリのメジャーアップデートによって使用できなくなってしまったりと混迷しています。
その他こまごまとしたもの #
以降の問題はすべて、上記の ISSUE が解消してネイティブ OAuth サインインが実装されれば必然的に解決されるものです。そのため重要度は低いですが、私が遭遇したほかの問題も載せておきます。
- ブラウザで認証したあとにアプリに戻らない事象
- ローカル開発時に Android エミュレータで OAuth サインインできない事象
- Android エミュレータでは localhost の代わりに 10.0.2.2 を指定する必要があることに関連している。
- https://github.com/supabase/supabase-flutter/issues/108#issuecomment-1126976181