1

firebase認証を使用してユーザーを認証するアンドロイドアプリがあります。サインアップした後、私はバックエンド(python/flask)にユーザー情報を送り、その情報をデータベースに保存します。特定のユーザーをインスタンスIDにリンクする方法

私はバックエンドから特定のユーザーに通知を送信する必要がありますが、どのインスタンスIDがユーザーのために属しているかをどのように知ることができますか?現在、ユーザーIDとインスタンスIDの間にはリンクがありません。これらをどのようにリンクできますか?ユーザーがログインする前にインスタンスIDが作成され、アプリの開始時にバックエンドに送信されます。

+0

しかし、ユーザーIDはどういう意味ですか?単にアプリケーションからサーバーにインスタンスIDを送信することができます。ユーザーを救うために何をしていますか? – Konrad

+0

ユーザIDは、FirebaseユーザのUIDを意味します。はい、私はインスタンスIDをサーバーに投稿できますが、どのように特定のユーザーにリンクできますか?登録後、ユーザーの追加情報をデータベースに保存します(firebase_uid、ニックネーム、年齢など)。 – iqpolar

+0

たとえば、ニックネームがJohn(データベースのユーザー)というユーザーにプッシュ通知を送信する必要があります.JohnのインスタンスIDはどのように把握できますか? – iqpolar

答えて

1

あなたはuidとiidの間のマッピングを維持する必要があります。したがって、ユーザーがログインするたびに、バックエンドのuid:[異なるデバイスのすべてのiid]のキー/バリューマップを維持します。 Firebase IDトークンを送信し、トークンを確認した後でそこからuidを取得してください。そのマッピングを維持する必要があります。ユーザがサインアウトした場合、またはFirebaseセッションが様々な理由(ユーザの無効化、削除またはパスワードのリセットなど)で無効になった場合、そのiidをuidからリンク解除し、iidが無効化されている場合はマッピングから削除します。 uidで識別されるユーザーにプッシュ通知を送信する必要がある場合は、iidトークンのリストを参照して、それぞれに通知を送信します。

+0

どのようにしてiidが無効になったのかを検出することができますので、iidをバックエンドに送信して、そのiidをuidからリンク解除できますか? – iqpolar

+0

トークンを削除するpublicメソッドがあります(https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId#public-methods)。トークンをリフレッシュするリスナー:https:// firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdService#public-methods – bojeil

+0

ユーザーがログインすると(iidとuidの間にリンクが作成されています)、次にアプリを削除して再インストールします(新しいiid作成した)。 iidとuidの間に時代遅れのリンクがあるのですか? – iqpolar

関連する問題