Firebaseについて学び、Firebase認証とFirebaseデータベースをユーザーのシステムに実装しようとしています。 FacebookでFirebase認証を使用する方法はわかっていますが、各ユーザーにいくつかの属性を追加したいと考えています(Firebase認証では、電子メール、UID、プロバイダ、およびプロファイルのイメージURLのみがあります)。Firebaseデータベースに特定のキーが存在するかどうかをチェック
私のソリューションは、ユーザー・レジストリーを作成しました:。
問題だから私はちょうどプッシュは初回のみでユーザーのサインを作るされて何をしたいのか
をこれは、私の主な活動:
public class MainActivity extends AppCompatActivity {
DatabaseReference myRef1;
DatabaseReference myRef;
private int RC_SIGN_IN = 1;
private String urlI, uid, name, uide;
boolean check_rate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myRef1 = FirebaseDatabase.getInstance().getReference();
myRef = myRef1.child("Usuarios");
FirebaseAuth auth = FirebaseAuth.getInstance();
id();
if (auth.getCurrentUser() != null) {
uide = auth.getInstance().getCurrentUser().getUid().toString();
if (check_rate) {
startActivity(new Intent(this, HomeActivity.class));
finish();
} else {
Map mProfile = new HashMap();
mProfile.put("name", auth.getInstance().getCurrentUser().getDisplayName().toString());
mProfile.put("image", auth.getInstance().getCurrentUser().getPhotoUrl().toString());
mProfile.put("uid", auth.getInstance().getCurrentUser().getUid().toString());
myRef.push().setValue(mProfile);
startActivity(new Intent(this, HomeActivity.class));
finish();
}
} else {
// abre a tela de login
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)
.setProviders(
AuthUI.FACEBOOK_PROVIDER)
.build(),
RC_SIGN_IN);
}
}
private void id() {
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map data = (Map) dataSnapshot.getValue();
//profile
urlI = (String) (data.get("image"));
name = (String) (data.get("name"));
uid = (String) (data.get("uid"));
check_rate = data.containsKey(uide);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Map data = (Map) dataSnapshot.getValue();
//profile
//Map mData = (HashMap) data.get("profile");
urlI = (String) (data.get("image"));
name = (String) (data.get("name"));
uid = (String) (data.get("uid"));
check_rate = data.containsKey(uide);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
これは動作しません。ユーザーがログインするたびにアップロードします。
これは素晴らしいフランク作品です。どうもありがとうございます –