Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.app.Activity;
- import android.content.Intent;
- import android.nfc.Tag;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.util.Patterns;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.ProgressBar;
- import android.widget.Toast;
- import com.facebook.AccessToken;
- import com.facebook.CallbackManager;
- import com.facebook.FacebookCallback;
- import com.facebook.FacebookException;
- import com.facebook.FacebookSdk;
- import com.facebook.login.LoginResult;
- import com.facebook.login.widget.LoginButton;
- import com.google.android.gms.auth.api.Auth;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
- import com.google.android.gms.auth.api.signin.GoogleSignInResult;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.SignInButton;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.auth.AuthCredential;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FacebookAuthProvider;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.auth.GoogleAuthProvider;
- public class MainActivity extends AppCompatActivity implements View.OnClickListener {
- FirebaseAuth mAuth;
- EditText editTextEmail, editTextPassword;
- ProgressBar progressBar;
- SignInButton gbutton;
- private final static int RC_SIGN_IN = 2;
- GoogleApiClient mGoogleApiClient;
- FirebaseAuth.AuthStateListener mAuthListener;
- LoginButton loginButtonFb;
- CallbackManager callbackManager;
- private void signIn() {
- Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
- startActivityForResult(signInIntent, RC_SIGN_IN);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- callbackManager.onActivityResult(requestCode,resultCode,data);
- // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
- if (requestCode == RC_SIGN_IN) {
- GoogleSignInResult result= Auth.GoogleSignInApi.getSignInResultFromIntent(data);
- if (result.isSuccess()){
- GoogleSignInAccount account = result.getSignInAccount();
- firebaseAuthWithGoogle(account);
- }else{
- Toast.makeText(MainActivity.this,"Auth went wrong",Toast.LENGTH_SHORT).show();
- }
- }
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- FacebookSdk.sdkInitialize(getApplicationContext());
- setContentView(R.layout.activity_main);
- mAuth= FirebaseAuth.getInstance();
- callbackManager = CallbackManager.Factory.create();
- gbutton = findViewById(R.id.googleBtn);
- editTextEmail = findViewById(R.id.editTextEmail);
- editTextPassword = findViewById(R.id.editTextPassword);
- progressBar=findViewById(R.id.progressbar);
- findViewById(R.id.btnSignUp).setOnClickListener(this);
- findViewById(R.id.buttonRegister).setOnClickListener(this);
- gbutton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- signIn();
- }
- });
- loginButtonFb=(LoginButton) findViewById(R.id.btnfacebook);
- loginButtonFb.setReadPermissions("email", "public_profile");
- loginButtonFb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- handleFacebookAccessToken(loginResult.getAccessToken());
- // startActivity(new Intent(MainActivity.this,ProfileActivity.class));
- }
- @Override
- public void onCancel() {
- Toast.makeText(MainActivity.this, "sign in cancelled", Toast.LENGTH_LONG).show();
- }
- @Override
- public void onError(FacebookException error) {
- Toast.makeText(MainActivity.this, "FacebookException error oh nooo!", Toast.LENGTH_LONG).show();
- }
- });
- mAuthListener = new FirebaseAuth.AuthStateListener() {
- @Override
- public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
- FirebaseUser user= firebaseAuth.getCurrentUser();
- if(AccessToken.getCurrentAccessToken() != null)
- Toast.makeText(MainActivity.this,AccessToken.getCurrentAccessToken().getExpires().toString(),Toast.LENGTH_SHORT).show();
- if(user != null){
- String email= user.getEmail();
- Toast.makeText(MainActivity.this,"succeesassss",Toast.LENGTH_SHORT).show();
- }
- }
- };
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestIdToken(getString(R.string.default_web_client_id))
- .requestEmail()
- .build();
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
- @Override
- public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
- Toast.makeText(MainActivity.this,"something went wrong",Toast.LENGTH_SHORT).show();
- }
- })
- .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
- .build();
- }
- private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
- AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
- mAuth.signInWithCredential(credential)
- .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- if (task.isSuccessful()) {
- // Sign in success, update UI with the signed-in user's information
- Log.d("TAG", "signInWithCredential:success");
- FirebaseUser user = mAuth.getCurrentUser();
- String googlemail= user.getEmail();
- // updateUI(user);
- Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
- //so we dont go back to login activity
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- } else {
- // If sign in fails, display a message to the user.
- Log.w("TAG", "signInWithCredential:failure", task.getException());
- Toast.makeText(MainActivity.this,"Auth Failed.",Toast.LENGTH_SHORT).show();
- // updateUI(null);
- }
- // ...
- }
- });
- }
- @Override
- public void onStart() {
- super.onStart();
- // Check if user is signed in (non-null) and update UI accordingly.
- FirebaseUser currentUser = mAuth.getCurrentUser();
- // updateUI(currentUser);
- }
- private void handleFacebookAccessToken(AccessToken token) {
- // Log.d(TAG, "HandleFacebookAccessToken:"+token);
- AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
- mAuth.signInWithCredential(credential)
- .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- if (!task.isSuccessful()) {
- Toast.makeText(MainActivity.this,"Auth failed",Toast.LENGTH_LONG ).show();
- }
- }
- });
- }
- private void userLogin(){
- String email = editTextEmail.getText().toString().trim();
- String password = editTextPassword.getText().toString().trim();
- if(email.isEmpty()){
- editTextEmail.setError("Email is required");
- editTextEmail.requestFocus();
- return;
- }
- if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
- editTextEmail.setError("Enter a valid Email Address");
- editTextEmail.requestFocus();
- return;
- }
- if(password.isEmpty()){
- editTextPassword.setError("Password is required");
- editTextPassword.requestFocus();
- return;
- }
- if(password.length()<6){
- editTextPassword.setError("Minimum length of password is 6 characters");
- editTextPassword.requestFocus();
- return;
- }
- progressBar.setVisibility(View.VISIBLE);
- mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- progressBar.setVisibility(View.GONE);
- if(task.isSuccessful()){
- FirebaseUser user = mAuth.getCurrentUser();
- String useremail= user.getEmail().toString();
- //start 3rd part auth and compare strings with database here using the email
- /// call load user information to compare firebase email to 3rd party email
- Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
- //so we dont go back to login activity
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- }else{
- Toast.makeText(getApplicationContext(),task.getException().getMessage(),Toast.LENGTH_LONG).show();
- }
- }
- });
- }
- public void updateUI(FirebaseUser user){
- // String email = user.getEmail();
- // Toast.makeText(MainActivity.this,email,Toast.LENGTH_SHORT).show();
- startActivity(new Intent(MainActivity.this,ProfileActivity.class));
- }
- @Override
- public void onClick(View view){
- switch (view.getId()){
- case R.id.btnSignUp:
- startActivity(new Intent(this, sign_up.class));
- break;
- case R.id.buttonRegister:
- userLogin();
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement