【发布时间】:2016-12-02 21:08:05
【问题描述】:
我正在学习 Firebase 并尝试在用户系统中实施 Firebase Auth 和 Firebase 数据库。 我知道如何在 Facebook 中使用 Firebase 身份验证,但我想为每个用户添加一些属性(在 Firebase 身份验证中,我们只有电子邮件、uid、提供者和个人资料图片网址)。
我的解决方案是创建一个用户注册表:
问题
所以我想做的只是在用户第一次登录时推送。这是我的 MainActivity:
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) {
}
});
}
这不起作用。用户每次登录时都会上传。 请帮忙
【问题讨论】:
标签: android facebook firebase firebase-realtime-database firebase-authentication