[Flutter] Firebase アプリチェック、デバッグビルド、認証エラー
要約を表示するには、一番下の結論のみを参照してください。
数宇の開発中に、Firebaseが強力に推奨しているアプリチェック機能を含めて開発しました。
アプリチェックを使用すると、FirebaseのさまざまなサービスやGoogle Cloudの一部を使用する際に、認証されたアプリかどうかを確認し、認証されていない場合には権限を付与することができます。
公式リリースされるアプリでは、Googleがアプリが改ざんされていないかどうかを自動的に確認するため、アプリチェックに問題はありませんが、私は開発中にデバッグバージョンのアプリも常にテストする必要があったため、FirebaseドキュメントのFlutterでデバッグプロバイダーと共にアプリチェックの使用を参考にし、Firebaseコンソールに関連するデバッグトークンを追加しました。
最初は関連する作業がうまく機能していました。
しかし、しばらくすると、Firebaseのクラウド機能で次のようなエラーが発生しました。
なぜこんなことが起きるのだろうか?やはり、Stack Overflowに答えはないのだろうか?と思って調べてみましたが、Googleコンソールでその関数にすべてのユーザーがアクセスできるように権限を与えるよう指示されました。
すべてのユーザーにアクセス権を与えると、アプリチェックを設定した理由がなくなるのではないでしょうか?
何か危険そうなので、権限を与えるのは後で考えようと思いましたが、あちこち探しても解決策は見つかりませんでした。
アプリチェックを諦めるべきか迷いましたが、最終的に答えを見つけました。
問題はデバッグトークンが変更されたことでした。
Firebaseでデバッグトークンを追加した後、実際のデバッグトークンの値はマスクされているため、よくわかりませんでしたが、これが変更されていました。
テストするデバイスによってデバッグトークンが割り当てられると考えていましたが、実際にはアプリが削除されてからインストールされる場合に、このトークンが変更されるようでした。
(Firebaseドキュメントにより詳細な情報が表示されるかもしれませんが、正確な情報ではありません...)
したがって、同じデバイスでも、配布用アプリバージョンをインストールしてテストし、再びテストバージョンをインストールすると、このプロセスでデバッグトークンが変更されるため、デバッグトークンを削除して再度追加する必要があります。
結論
アプリチェックを適用していて、Unauthenticatedエラーに遭遇している場合は、デバッグトークンの再設定を試してみると問題が解決されるかもしれません!
独自の計算機が必要な場合は、Google Playから数宇をダウンロードしてください。
この記事が気に入ったらサポートをしてみませんか?