2017-05-21 6 views
0

このQuestion in minedの場合、以下の質問があります。FirebaseAuth user uidを使用するタイミングと、識別子として電子メールを使用する場合

私の前提を訂正してください。私の学習曲線は積極的です:)。

チャットシステムの内部にあるFirebaseAuth.getInstance().getCurrentUser().getUid() uidをチャットメンバーの識別子として使用して、Firebaseをバックエンドストレージとして使用するチャットアプリを作成する場合、アカウントを削除してアカウントを削除できるようにするという悪い考えがあります。 uidが変わるとデータベースが壊れるでしょうか?

私の次の前提は、チャットアプリケーションの中に安全なユーザーIDを持つためには、trusted providerのためサインインした電子メールアドレスを使用できるということです。 私の結論は、ユーザの識別子としてgetCurrentUser().getUid()のUIDを使用しないことですか?

答えて

1

getCurrentUser().getUid()を使用することは悪い考えではありませんが、より良いアイデアは、識別子としてemail addressを使用することです。私がこれを言っているのは、ユーザがアカウントを削除して、返品する場合、uidが確かに違うからです。 Firebaseがキーにドット記号.を許可していませんので、メールアドレスは次のようにエンコードする必要があります:

[email protected] - >名@電子メール、COM

あなたはおそらくご覧のよう私は.,に変更しました。これを行うには、次の方法をお勧めします:

static String encodeUserEmail(String userEmail) { 
    return userEmail.replace(".", ","); 
} 

static String decodeUserEmail(String userEmail) { 
    return userEmail.replace(",", "."); 
} 

希望すると助かります。

+0

ありがとうございました。多分私は正しい方法で笑っています。電子メールでプログラム的に面倒なのではないでしょうか、それをハッシュしてどこでもキーのハッシュを使用してください。 –

+1

実際はそれは全く単純です。ユーザーの電子メールをエンコードする必要があるのは、ユーザーの電子メールをデータベースに追加してデコードするときだけです(表示する場合のみ)。ハッシュについては必要ありません。 'SharedPreferences'に保存してアプリケーション全体よりも使用することができますか? –

+0

Facebookでは、電話番号のみを使用してアカウントを作成できます。それをどう扱うか? –

関連する問題