2017-06-14 12 views
1

私はFirebaseUI-Androidで遊んでいて、ユーザーを一意に識別するときに使用するIDについて質問します。 FirebaseUIは認証の権利を管理し、IdpResponseオブジェクトを返します。これは、例えば、 Facebook、Twitter、Phone and more ..これは背後にいる皆さんに感謝しています。FirebaseユーザーIDを使用していないカスタムFirebaseユーザーID

FirebaseUser.getUid()は、ユーザーが自分のアカウントを削除/再作成したときに変更される可能性があるため、ユーザーデータをFirebaseUser.getUid()トークンとリンクさせたくありません。

将来、ユーザーがアカウントを消去できるようにすると、ユーザーが戻ったときにuidが変更され、システムのそのユーザーのすべてのユーザー履歴にもうアクセスできなくなります。将来的に私のシステムをどこかに移行すれば、uidはそんなにうまくいきません。

今度はこのラッパー(以下のコード)を作成して、IdpResponse内のデータから外挿した一意のIDを作成しました。本当にDunnoですが、私はGoogle2.0がない限り、このようにして "id"衝突が起こることはありません。 Twitter2.0 :)右。そして同時に、IDはUUIDではないので、システムのバグを暴くことは簡単です。

これは、ユーザーIDの問題を処理するための推奨方法ですか。私は本当にこれに関するいくつかのフィードバックと落とし穴の警告が必要です。私はまだFirebaseUser.getUid()を使用する必要がありますので、これを最も気に何

@Override 
public String getUserId() { 
    String userId; 
    FirebaseUser user = getInstance().getCurrentUser(); 
    if (user.getEmail() != null) 
     // User sign in with E-Mail 
     userId = user.getEmail().replace(".", ","); 
    else if (user.getPhoneNumber() != null){ 
     // User sign in with Phone 
     userId = user.getPhoneNumber(); 
    }else 
     // User sign in with Twitter or Facebook 
     userId = user.getUid(); 
    return userId; 
} 

は、TwitterやFacebookのです。 IdpResponse.getIdpToken()は私たちにとってより良いものですか?

答えて

0

投稿に記載されているとおり、uidの使用は最適な選択肢ではありません。ユーザーが自分のアカウントを削除し、別のアカウントを作成しようとすると、別のuidが生成されます。この場合、彼はすべてのデータ履歴を失います。 ユーザーを識別する最も良い方法は、email addressを使用することです。電子メールアドレスはユニークで使いやすく、将来的にはGoogle accountFacebook accountTwitter accountとリンクするには、電子メールアドレスに基づいてIDを使用できるようにします。 、あなたはおそらくご覧のよう>名@電子メール、COM

-

[email protected]:Firebase鍵に.シンボルを受け入れていないので、私はあなたがこのような電子メールアドレスをエンコード示唆します私はドット記号.を昏睡,に変更しました。これを実現するには、次の方法をお勧めします。

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

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

希望すると助かります。

+0

私は同じことを考えていました。 –

+0

私の答えがあなたを助けてくれたと思ったら、それを受け入れて+1を与えることを検討してください。ありがとう! –

関連する問題