Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package aviraj.firebaseapp;
- import android.content.Intent;
- import android.support.annotation.NonNull;
- import android.support.design.widget.TextInputLayout;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.View;
- import android.view.WindowManager;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ProgressBar;
- import android.widget.Toast;
- 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.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.FirebaseAuth;
- import com.google.android.gms.common.SignInButton;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.auth.GoogleAuthProvider;
- import com.google.firebase.auth.UserProfileChangeRequest;
- public class SignUpActivity extends AppCompatActivity {
- private static final String TAG = "SignUpActivity";
- private FirebaseAuth auth;
- private ProgressBar progressBar;
- private EditText signupInputEmail;
- private EditText signupInputPassword;
- private EditText signupInputName;
- private TextInputLayout signupInputLayoutEmail;
- private TextInputLayout signupInputLayoutPassword;
- private SignInButton mGoogleBtn;
- private GoogleApiClient mGoogleApiClient;
- private static final int RC_SIGN_IN = 1;
- private TextInputLayout signupInputLayoutName;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_signup);
- auth = FirebaseAuth.getInstance();
- mGoogleBtn = findViewById(R.id.googleBtn);
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestIdToken(getString(R.string.default_web_client_id))
- .requestEmail()
- .build();
- mGoogleApiClient = new GoogleApiClient.Builder(getApplicationContext())
- .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
- @Override
- public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
- Toast.makeText(SignUpActivity.this, "An error occurred.", Toast.LENGTH_LONG).show();
- }
- })
- .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
- .build();
- mGoogleBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- signIn();
- }
- });
- signupInputLayoutEmail = findViewById(R.id.signup_input_layout_email);
- signupInputLayoutPassword = findViewById(R.id.signup_input_layout_password);
- signupInputLayoutName = findViewById(R.id.signup_input_layout_name);
- progressBar = findViewById(R.id.progressBar);
- signupInputEmail = findViewById(R.id.signup_input_email);
- signupInputPassword = findViewById(R.id.signup_input_password);
- signupInputName = findViewById(R.id.signup_input_name);
- Button btnSignUp = findViewById(R.id.btn_signup);
- Button btnLinkToLogIn = findViewById(R.id.btn_link_login);
- btnSignUp.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- submitForm();
- }
- });
- btnLinkToLogIn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
- startActivity(intent);
- }
- });
- }
- private void submitForm() {
- String name = signupInputName.getText().toString().trim();
- String email = signupInputEmail.getText().toString().trim();
- String password = signupInputPassword.getText().toString().trim();
- if(!checkEmail()) {
- return;
- }
- if(!checkPassword()) {
- return;
- }
- signupInputLayoutEmail.setErrorEnabled(false);
- signupInputLayoutPassword.setErrorEnabled(false);
- progressBar.setVisibility(View.VISIBLE);
- //create user
- auth.createUserWithEmailAndPassword(email, password)
- .addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- Log.d(TAG,"createUserWithEmail:onComplete:" + task.isSuccessful());
- progressBar.setVisibility(View.GONE);
- // If sign in fails, Log the message to the LogCat. If sign in succeeds
- // the auth state listener will be notified and logic to handle the
- // signed in user can be handled in the listener.
- if (!task.isSuccessful()) {
- Log.d(TAG,"Authentication failed." + task.getException());
- } else {
- startActivity(new Intent(SignUpActivity.this, UserActivity.class));
- finish();
- }
- }
- });
- Toast.makeText(getApplicationContext(), "You are successfully Registered !!", Toast.LENGTH_SHORT).show();
- }
- private boolean checkEmail() {
- String email = signupInputEmail.getText().toString().trim();
- if (email.isEmpty() || !isEmailValid(email)) {
- signupInputLayoutEmail.setErrorEnabled(true);
- signupInputLayoutEmail.setError(getString(R.string.err_msg_email));
- signupInputEmail.setError(getString(R.string.err_msg_required));
- requestFocus(signupInputEmail);
- return false;
- }
- signupInputLayoutEmail.setErrorEnabled(false);
- return true;
- }
- private boolean checkPassword() {
- String password = signupInputPassword.getText().toString().trim();
- if (password.isEmpty() || !isPasswordValid(password)) {
- signupInputLayoutPassword.setError(getString(R.string.err_msg_password));
- signupInputPassword.setError(getString(R.string.err_msg_required));
- requestFocus(signupInputPassword);
- return false;
- }
- signupInputLayoutPassword.setErrorEnabled(false);
- return true;
- }
- private static boolean isEmailValid(String email) {
- return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
- }
- private static boolean isPasswordValid(String password){
- return (password.length() >= 6);
- }
- private void requestFocus(View view) {
- if (view.requestFocus()) {
- getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- }
- }
- @Override
- protected void onResume() {
- super.onResume();
- progressBar.setVisibility(View.GONE);
- }
- 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);
- // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
- if (requestCode == RC_SIGN_IN) {
- GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
- if (result.isSuccess()){
- // Google Sign In was successful, authenticate with Firebase
- GoogleSignInAccount account = result.getSignInAccount();
- firebaseAuthWithGoogle(account);
- Intent intent = new Intent(SignUpActivity.this, UserActivity.class);
- startActivity(intent);
- finish();
- } else{
- setContentView(R.layout.activity_signup);
- }
- }
- }
- private void firebaseAuthWithGoogle(GoogleSignInAccount account){
- AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
- auth.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 = auth.getCurrentUser();
- UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder().setDisplayName("John Smith").build();
- user.updateProfile(profileUpdates);
- } else {
- // If sign in fails, display a message to the user.
- Log.w(TAG, "signInWithCredential:failure", task.getException());
- Toast.makeText(SignUpActivity.this, "Authentication failed.",
- Toast.LENGTH_SHORT).show();
- }
- // ...
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement