[Flutter] Firebase アプリチェック、デバッグビルド、認証エラー

要約を表示するには、一番下の結論のみを参照してください。

数宇の開発中に、Firebaseが強力に推奨しているアプリチェック機能を含めて開発しました。

アプリチェックを使用すると、FirebaseのさまざまなサービスやGoogle Cloudの一部を使用する際に、認証されたアプリかどうかを確認し、認証されていない場合には権限を付与することができます。

公式リリースされるアプリでは、Googleがアプリが改ざんされていないかどうかを自動的に確認するため、アプリチェックに問題はありませんが、私は開発中にデバッグバージョンのアプリも常にテストする必要があったため、FirebaseドキュメントのFlutterでデバッグプロバイダーと共にアプリチェックの使用を参考にし、Firebaseコンソールに関連するデバッグトークンを追加しました。

最初は関連する作業がうまく機能していました。

しかし、しばらくすると、Firebaseのクラウド機能で次のようなエラーが発生しました。

com.google.firebase.functions.FirebaseFunctionsException: Unauthenticated、{code: unauthenticated、message: Unauthenticated}

なぜこんなことが起きるのだろうか?やはり、Stack Overflowに答えはないのだろうか?と思って調べてみましたが、Googleコンソールでその関数にすべてのユーザーがアクセスできるように権限を与えるよう指示されました。

すべてのユーザーにアクセス権を与えると、アプリチェックを設定した理由がなくなるのではないでしょうか?

何か危険そうなので、権限を与えるのは後で考えようと思いましたが、あちこち探しても解決策は見つかりませんでした。

アプリチェックを諦めるべきか迷いましたが、最終的に答えを見つけました。

問題はデバッグトークンが変更されたことでした。

Firebaseでデバッグトークンを追加した後、実際のデバッグトークンの値はマスクされているため、よくわかりませんでしたが、これが変更されていました。

テストするデバイスによってデバッグトークンが割り当てられると考えていましたが、実際にはアプリが削除されてからインストールされる場合に、このトークンが変更されるようでした。
(Firebaseドキュメントにより詳細な情報が表示されるかもしれませんが、正確な情報ではありません...)

したがって、同じデバイスでも、配布用アプリバージョンをインストールしてテストし、再びテストバージョンをインストールすると、このプロセスでデバッグトークンが変更されるため、デバッグトークンを削除して再度追加する必要があります。

結論

アプリチェックを適用していて、Unauthenticatedエラーに遭遇している場合は、デバッグトークンの再設定を試してみると問題が解決されるかもしれません!

独自の計算機が必要な場合は、Google Playから数宇をダウンロードしてください。


この記事が気に入ったらサポートをしてみませんか?