-K...
の値は有効なFirebase認証UIDではないプッシュIDのようです。だから、私はあなたのユーザーがサインインしていないと感じる。プッシュIDがユーザーを識別するシステムを間違いなく思いつくことができる間、それらのIDはFirebase認証またはFirebaseデータベースセキュリティルールに引き継がれない。正直言って、彼らが引き継ぐのであれば、かなり安全ではないでしょう。
電子メール+パスワードまたはソーシャルプロバイダにサインインせずにユーザーを安全に識別したい場合は、Firebase's anonymous authenticationを使用してください。ユーザーには同じように動作します。サインインする必要はありませんが、Firebaseでは、実際のUIDを持つ適切に認証されたユーザーであることを意味します。そして、コードは同じくらい簡単です:
FirebaseAuth.getInstance().signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInAnonymously:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.w(TAG, "signInAnonymously", task.getException());
Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
と(彼らはアプリを再起動したときにも、それらを再び拾う)ユーザーに署名を検出するために:私はこのカントーを入れてください
FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
おかげで、 ?私はどこにでもサインインしたいですか? – Daniel
最初のスニペットは、実際にサインインする場所です.2番目のスニペットは 'onCreate'または' onStart'になければなりません。上記のコピーされた作業コードが含まれているので、私は詳細な説明のために私がリンクしているドキュメントを見てください。 –