2016-05-24 3 views
4

レガシーFirebase APIでは、私は "mFirebase.getAuth()。getExpires()"を使ってユーザセッションを検証していました。しかし、新しいFirebase 9.0.0 APIでは、このような検証は見つかりませんでした。Firebase 9.0.0 APIでは、ユーザーに有効な認証セッションがあるかどうかを確認する方法はありますか?

は、今私は、以下のようにトークンの有効期限が切れてしまった場合、私は、これを処理するにはどうすればよい

public static boolean hasValidAuthToken() { 
    return FirebaseAuth.getInstance().getCurrentUser() != null ? true : false; 
} 

を認証セッションの可用性をチェックしていますか?

更新: 実際に私はカスタム認証を行っています。サーバ側でFirebaseサーバsdk(java)を持つ。デフォルトでは、認証トークンは1時間後に失効します。トークンの有効期限が切れた後にエラーを次の取得

D/ConnectionRetryHelper: Scheduling retry in 398ms 
D/PersistentConnection: pc_0 - Trying to fetch auth token 
D/PersistentConnection: pc_0 - Error fetching token: An internal error has occured. [ Internal error. ] 
D/PersistentConnection: pc_0 - Scheduling connection attempt 

は、どのように私は、このシナリオを扱うことができますか?

ありがとうございます!

+0

私はFirebase Githubのページに[Firebaseカスタム認証トークンの有効期間が最大1時間(3600秒)に制限されているのはなぜですか?](https://github.com/firebase/quickstart-android/issues)/31) –

答えて

2

Firebaseデータベースまたはストレージと対話するのに十分なチェックが必要です。トークンは認証SDKによって自動的にリフレッシュされます。

+0

ご協力いただきありがとうございます。実際に私はカスタム認証をしています。私はエラーと共に私の質問を更新しました。 –

3

Firebaseの最新バージョンでは、トークンを「新鮮」に保つためにエラーが発生しています。

このdiscussionでは、Googleの開発者がこの問題を解決するためのガイドを共有しました。

ガイド:https://drive.google.com/file/d/0B94LePkXiqa6SXVFd3N1NzJHX1E/view

それは私のために働きました。

+1

常に解決策を解答しようとすると、リンクが死んでいる可能性があります。 –

+0

更新いただきありがとうございます! **カスタム認証**をしていますか? –

+0

いいえ私のケースでは、匿名認証チェックのみを使用しているため、アプリケーションユーザーだけが自分のデータベースを使用できます。 –

2

FirebaseAuth.getInstance()。Firebaseで認証されていない場合、getCurrentUser()はnullを返します。ユーザーがログアウトした場合、またはサインインしていない場合に発生します。

JWTで生成されたカスタム認証のサーバー側の有効期間は最大60分です。その前にFirebaseにユーザを認証するためにそれを使用していない場合は、あなたが言及したようなエラーが表示されると思います。

トークンが期限切れになる前に(つまり、生成後1時間以内に)、Firebaseに提出してみてください。その前にFirebaseに対してユーザーを認証していない場合は、サーバーに別のトークンをカスタム生成する必要があります。

カスタムトークンをFirebaseに送信してユーザを認証する方法については、https://firebase.google.com/docs/auth/android/custom-authを参照してください。

関連する問題