Project 9 : Google login firebase data store realtime databse and data fetch

 step 1:-

MainActivitry.java

Google login firebase data store realtime databse upload data-

package com.sandhya.youtube.activities;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.sandhya.youtube.R;
import com.sandhya.youtube.adapter.ContentAdapter;
import com.sandhya.youtube.databinding.ActivityMainBinding;
import com.sandhya.youtube.models.ContentModels;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import de.hdodenhof.circleimageview.CircleImageView;

public class MainActivity extends AppCompatActivity {

ActivityMainBinding binding;
private FirebaseAuth auth;
FirebaseUser user;
GoogleSignInClient googleSignInClient;
GoogleSignInOptions gsc;
private static final int REQ_CODE = 100;
private static final int PERMISSION = 101;
private static final int PICK_GALLERY = 102;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

//permission check
checkPermission();
//google
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
gsc = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string
.default_web_client_id)).requestEmail().build();
googleSignInClient = GoogleSignIn.getClient(MainActivity.this, gsc);

//getSupportActionBar().hide();

binding.toolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {

switch (item.getItemId()) {

case R.id.account:
//Toast.makeText(MainActivity.this, "Account", Toast.LENGTH_SHORT).show();
initAccount();
break;
}
return false;
}
});
}

//Google login 1
public void initAccount() {
if (user != null) {
Toast.makeText(this, "User Already Sign In...", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, AccountActivity.class);
startActivity(intent);
} else {
initGoogleLogin();
}
}

//Google login 2
private void initGoogleLogin() {
Intent intent = googleSignInClient.getSignInIntent();
startActivityForResult(intent, REQ_CODE);
}

//Google login 3
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE:
if (resultCode == RESULT_OK && data != null) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
auth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

//date and time
String date = DateFormat.getDateInstance().format(new Date());
String time = DateFormat.getTimeInstance().format(new Date());

//map data
HashMap<String, Object> map = new HashMap<>();
map.put("username", account.getDisplayName());
map.put("email", account.getEmail());
map.put("profile", String.valueOf(account.getPhotoUrl()));
map.put("uid", firebaseUser.getUid());
map.put("Joining Time", time);
map.put("Joining Date", date);
map.put("search", account.getDisplayName().toLowerCase());

DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users");
reference.child(firebaseUser.getUid()).setValue(map);
Toast.makeText(MainActivity.this, "Login Successfully", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), AccountActivity.class));
} else {
Toast.makeText(MainActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
break;
case PICK_GALLERY:
if (resultCode == RESULT_OK && data != null) {
videoUri = data.getData();
Intent intent = new Intent(MainActivity.this, PublishActivity.class);
intent.putExtra("type", "video");
intent.setData(videoUri);
startActivity(intent);
}

}

public void checkPermission() {
if (ActivityCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION);
} else {
Log.d("permission", "checkPermission: Permission granted");
}
}

}


 step 2:-

AccountActivity.java

Google login firebase data store realtime databse fetch date-

package com.sandhya.youtube.activities;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.sandhya.youtube.R;
import com.sandhya.youtube.databinding.ActivityAccountBinding;
import com.squareup.picasso.Picasso;

import java.text.DateFormat;
import java.util.Date;
import java.util.HashMap;

public class AccountActivity extends AppCompatActivity {

ActivityAccountBinding binding;
FirebaseAuth auth;
FirebaseUser user;
DatabaseReference reference;
//profile picture and email
String profile, email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityAccountBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

//Firebase Google Login
initAuthUserRefence();
initUserData();

}

//firebase google login step 1
public void initAuthUserRefence() {
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference();
}

//firebase google login step 2
public void initUserData() {
reference.child("Users").child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String username = snapshot.child("username").getValue().toString();
email = snapshot.child("email").getValue().toString();
profile = snapshot.child("profile").getValue().toString();

binding.txtUsername.setText(username);
binding.txtEmail.setText(email);
binding.imgProfile.setImageURI(Uri.parse(profile));
Picasso.get().load(profile).placeholder(R.drawable.ic_account).into(binding.imgProfile);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(AccountActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
} 



Post a Comment

Post a Comment (0)

Previous Post Next Post