Firebaseカスタムトークン生成には制限があります。 Firebaseのカスタム認証トークンは最大1時間(3600秒)に制限されています。
expトークンの有効期限が切れる時間(秒単位)。これは、iatよりも遅くても3600秒後に になる可能性があります。
認証トークンが時間ごとに有効期限が切れた場合、その困難な私たちは有効なセッションを維持するために、すべての時間:(
我々は(グーグル、フェイスブック、電子メール...)のようなデフォルトの認証プロバイダを使用します。Firebase SDKデフォルトでは、あなたの認証トークンをリフレッシュするの世話をする。しかし、カスタム認証では、Firebase SDKは、新しいトークンを取得するには、サードパーティのサーバーに連絡する必要があります。 ここだけSDKがトークンをリフレッシュするために失敗している!
私の回避策は、あります地元で「最後にトークンを取得する時刻」の情報を毎月更新する トークンが正常にフェッチされたため、1時間後に手動でトークンを更新できます。あなたはより多くの情報のため、この問題のログを参照することができ
、
- https://github.com/firebase/quickstart-android/issues/31
- In Firebase 9.0.0 API, how to check the user has valid Auth session or not?
更新:
Googleは彼らの文書、
を更新
exp(有効期限):UNIXエポックからの経過時間(トークンの有効期限)。最大3600秒後にihatよりも になる可能性があります。 (注:これは、カスタムトークン の有効期限が切れる時刻のみを制御しますが、 signInWithCustomToken()を使用してユーザーに署名すると、セッションが無効になるか、ユーザーがログアウトするまで、デバイス にログインしたままになります。
と言うと、カスタムJWTトークンはmax 1Hrに対して有効です。有効期限が切れる前にFirebaseでユーザを認証してください。そのセッションはアクティブのままです。それは失効しません!
あなたは
public static boolean hasValidAuthToken() {
return FirebaseAuth.getInstance().getCurrentUser() != null ? true : false;
}
希望、これはあなたを助けるでしょう、そのユーザが有効なセッションを持っていることを確認するための方法の下に使用することができます!
実際、これはVarshaが探している解決策ですか? –
私は "http://stackoverflow.com/questions/37505119/firebase-android-authentication-failed-expired-token-auth-token-is-expired"で与えられた解決策を試しました。しかし、私のために働かなかった。 –
@ChintanSoniが 'onTokenRefresh()'のところで 'FirebaseInstanceId'を使って答えを出すのはまったく予想外のことではありません。どちらもFirebase Cloud Messagingのコンセプトです。 Firebase認証と何が関係しているかは良い質問ですが、OPは[MCVE](http://stackoverflow.com/help/mcve)を提供することで答えなければならないものです。 –