トークンが再び取り出され、その間に、ユーザが接続されていることを示すノードへの新しいエントリが作成される。そのエントリは削除されず、ゴーストユーザーが作成されます。ユーザプレゼンスと認証
SHA1キーを追加したり、新しいgoogle-services.jsonファイルをプロジェクトに使用したりするなど、複数のソリューションを試しましたが、ほとんど成功しませんでした。私のデータベースから認証ルールを削除すると、これはもはや発生しないので、問題は認証だと思われます。私の最初の認証は、カスタムトークンを介して行われ
I/art: Enabling alloc tracker (65536 entries of 16 frames, taking 8MB)
W/PersistentConnection: pc_0 - Auth token revoked: expired_token (Auth token is expired.)
D/EventRaiser: Raising 1 event(s)
D/EventRaiser: Raising /.info/connected: VALUE: false
D/Persistence: Starting transaction.
D/Persistence: Persisted a total of 1 rows and deleted 0 rows for a set at /registered-users/....../lastOnline in 2ms
D/Persistence: Transaction completed. Elapsed: 38ms
D/RepoOperation: Aborting transactions for path: /registered-users/....../lastOnline. Affected: /registered-users/....../lastOnline
D/Persistence: Starting transaction.
D/Persistence: Persisted a total of 1 rows and deleted 1 rows for a set at /connected-users/....../-KZLNBlImkX978ftO6z1 in 2ms
D/Persistence: Transaction completed. Elapsed: 6ms
D/RepoOperation: Aborting transactions for path: /connected-users/....../-KZLNBlImkX978ftO6z1. Affected: /connected-users/....../-KZLNBlImkX978ftO6z1
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
D/FirebaseAuth: Notifying listeners about user (......).
D/FirebaseApp: Notifying auth state listeners.
D/FirebaseApp: Notified 1 auth state listeners.
D/RepoOperation: Auth token changed, triggering auth token refresh
D/EventRaiser: Raising 1 event(s)
D/EventRaiser: Raising /.info/connected: VALUE: true
I/CONNECTED: true
D/RepoOperation: set: /connected-users/....../-KZLTZmyGMvWPdJKmdeV
D/DataOperation: set: /connected-users/....../-KZLTZmyGMvWPdJKmdeV true
D/Persistence: Starting transaction.
D/Persistence: Persisted user overwrite in 1ms
D/Persistence: Transaction completed. Elapsed: 8ms
D/RepoOperation: Aborting transactions for path: /connected-users/....../-KZLTZmyGMvWPdJKmdeV. Affected: /connected-users/....../-KZLTZmyGMvWPdJKmdeV
D/Persistence: Starting transaction.
D/Persistence: Deleted 1 write(s) with writeId 2 in 1ms
D/Persistence: Persisted a total of 1 rows and deleted 0 rows for a set at /connected-users/....../-KZLTZmyGMvWPdJKmdeV in 7ms
D/Persistence: Transaction completed. Elapsed: 34ms
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
:ここ
は、問題を示しているいくつかのログです。
私はかなりのオプション(4)を行ってきましたが、うまくいくと思います。接続ごとにTRUEを押すのではなく、現在のトークンの有効期限をプッシュします。私はまだonDisconnectでそれを削除しようとしますが、失敗した場合は、タイムスタンプが過去のものであれば、指定された接続が廃止されていることが分かります。また、適切な瞬間に古いタイムスタンプを見つけて削除します。私が望んでいたより複雑ですが、それは機能します。 – aldel
SDKで問題が修正されたときに通知できるように、問題が発生していますか? (私は主にJSクライアントライブラリに関心を持っていますが、Androidライブラリにも同じ問題があるようです。) – aldel
これらのオプションに加えて、このマイケルを扱うきれいな方法がありましたか? –