我正在使用Firebase数据库和Firebase身份验证,允许用户使用电子邮件/密码或Google登录进行登录.在登录活动中,我正在尝试检查用户是否登录Google,是第一次执行此操作还是不执行此操作.
如果这是他第一次签名,则会出现一个对话框并请求用户的年龄和性别; 如果不是,则不应出现对话框.
我遇到的问题是,如果用户使用Google登录,则始终会显示对话框,无论是否是第一次.
这是我的代码,我试图检查用户是否第一次登录:
protected void updateActivity(FirebaseUser user) {
Log.d(TAG ,"updateActivity(FirebaseUser) - Ini");
final boolean[] exist = {false};
if(user != null) {
ArrayList<String> providers = (ArrayList<String>) user.getProviders();
if(!providers.isEmpty() && providers.get(0).equals("google.com")) {
username = user.getEmail().substring(0,user.getEmail().indexOf('@'));
String userId = user.getUid();
Query query = mRef.orderByChild("userName").equalTo(username);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot userSnapShot : dataSnapshot.getChildren()){
if (!userSnapShot.getKey().equals(null) && !userSnapShot.getKey().isEmpty()) {
exist[0] = true;
Intent i = new Intent(LoginActivity.this, HomeActivity.class);
startActivity(i);
finish();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) …Run Code Online (Sandbox Code Playgroud)