Advertisement
Guest User

SignUpActivity.java

a guest
Dec 4th, 2017
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.03 KB | None | 0 0
  1. package aviraj.firebaseapp;
  2.  
  3. import android.content.Intent;
  4. import android.support.annotation.NonNull;
  5. import android.support.design.widget.TextInputLayout;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.text.TextUtils;
  9. import android.util.Log;
  10. import android.view.View;
  11. import android.view.WindowManager;
  12. import android.widget.Button;
  13. import android.widget.EditText;
  14. import android.widget.ProgressBar;
  15. import android.widget.Toast;
  16.  
  17.  
  18. import com.google.android.gms.auth.api.Auth;
  19. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  20. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  21. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  22. import com.google.android.gms.common.ConnectionResult;
  23. import com.google.android.gms.common.api.GoogleApiClient;
  24. import com.google.android.gms.tasks.OnCompleteListener;
  25. import com.google.android.gms.tasks.Task;
  26. import com.google.firebase.auth.AuthCredential;
  27. import com.google.firebase.auth.AuthResult;
  28. import com.google.firebase.auth.FirebaseAuth;
  29. import com.google.android.gms.common.SignInButton;
  30. import com.google.firebase.auth.FirebaseUser;
  31. import com.google.firebase.auth.GoogleAuthProvider;
  32. import com.google.firebase.auth.UserProfileChangeRequest;
  33.  
  34. public class SignUpActivity extends AppCompatActivity {
  35.  
  36. private static final String TAG = "SignUpActivity";
  37. private FirebaseAuth auth;
  38. private ProgressBar progressBar;
  39. private EditText signupInputEmail;
  40. private EditText signupInputPassword;
  41. private EditText signupInputName;
  42. private TextInputLayout signupInputLayoutEmail;
  43. private TextInputLayout signupInputLayoutPassword;
  44. private SignInButton mGoogleBtn;
  45. private GoogleApiClient mGoogleApiClient;
  46. private static final int RC_SIGN_IN = 1;
  47. private TextInputLayout signupInputLayoutName;
  48.  
  49. @Override
  50. protected void onCreate(Bundle savedInstanceState) {
  51. super.onCreate(savedInstanceState);
  52. setContentView(R.layout.activity_signup);
  53. auth = FirebaseAuth.getInstance();
  54.  
  55. mGoogleBtn = findViewById(R.id.googleBtn);
  56. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  57. .requestIdToken(getString(R.string.default_web_client_id))
  58. .requestEmail()
  59. .build();
  60.  
  61. mGoogleApiClient = new GoogleApiClient.Builder(getApplicationContext())
  62. .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
  63. @Override
  64. public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  65. Toast.makeText(SignUpActivity.this, "An error occurred.", Toast.LENGTH_LONG).show();
  66. }
  67. })
  68. .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  69. .build();
  70.  
  71. mGoogleBtn.setOnClickListener(new View.OnClickListener() {
  72. @Override
  73. public void onClick(View view) {
  74. signIn();
  75. }
  76. });
  77.  
  78. signupInputLayoutEmail = findViewById(R.id.signup_input_layout_email);
  79. signupInputLayoutPassword = findViewById(R.id.signup_input_layout_password);
  80. signupInputLayoutName = findViewById(R.id.signup_input_layout_name);
  81. progressBar = findViewById(R.id.progressBar);
  82.  
  83.  
  84. signupInputEmail = findViewById(R.id.signup_input_email);
  85. signupInputPassword = findViewById(R.id.signup_input_password);
  86. signupInputName = findViewById(R.id.signup_input_name);
  87.  
  88. Button btnSignUp = findViewById(R.id.btn_signup);
  89. Button btnLinkToLogIn = findViewById(R.id.btn_link_login);
  90.  
  91.  
  92. btnSignUp.setOnClickListener(new View.OnClickListener() {
  93. @Override
  94. public void onClick(View view) {
  95. submitForm();
  96.  
  97. }
  98. });
  99.  
  100. btnLinkToLogIn.setOnClickListener(new View.OnClickListener() {
  101. @Override
  102. public void onClick(View view) {
  103. Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
  104. startActivity(intent);
  105. }
  106. });
  107.  
  108.  
  109. }
  110.  
  111. private void submitForm() {
  112. String name = signupInputName.getText().toString().trim();
  113. String email = signupInputEmail.getText().toString().trim();
  114. String password = signupInputPassword.getText().toString().trim();
  115.  
  116. if(!checkEmail()) {
  117. return;
  118. }
  119. if(!checkPassword()) {
  120. return;
  121. }
  122. signupInputLayoutEmail.setErrorEnabled(false);
  123. signupInputLayoutPassword.setErrorEnabled(false);
  124.  
  125. progressBar.setVisibility(View.VISIBLE);
  126. //create user
  127. auth.createUserWithEmailAndPassword(email, password)
  128. .addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
  129. @Override
  130. public void onComplete(@NonNull Task<AuthResult> task) {
  131. Log.d(TAG,"createUserWithEmail:onComplete:" + task.isSuccessful());
  132. progressBar.setVisibility(View.GONE);
  133. // If sign in fails, Log the message to the LogCat. If sign in succeeds
  134. // the auth state listener will be notified and logic to handle the
  135. // signed in user can be handled in the listener.
  136. if (!task.isSuccessful()) {
  137. Log.d(TAG,"Authentication failed." + task.getException());
  138.  
  139. } else {
  140. startActivity(new Intent(SignUpActivity.this, UserActivity.class));
  141. finish();
  142. }
  143. }
  144. });
  145. Toast.makeText(getApplicationContext(), "You are successfully Registered !!", Toast.LENGTH_SHORT).show();
  146. }
  147.  
  148. private boolean checkEmail() {
  149. String email = signupInputEmail.getText().toString().trim();
  150. if (email.isEmpty() || !isEmailValid(email)) {
  151.  
  152. signupInputLayoutEmail.setErrorEnabled(true);
  153. signupInputLayoutEmail.setError(getString(R.string.err_msg_email));
  154. signupInputEmail.setError(getString(R.string.err_msg_required));
  155. requestFocus(signupInputEmail);
  156. return false;
  157. }
  158. signupInputLayoutEmail.setErrorEnabled(false);
  159. return true;
  160. }
  161.  
  162. private boolean checkPassword() {
  163.  
  164. String password = signupInputPassword.getText().toString().trim();
  165. if (password.isEmpty() || !isPasswordValid(password)) {
  166.  
  167. signupInputLayoutPassword.setError(getString(R.string.err_msg_password));
  168. signupInputPassword.setError(getString(R.string.err_msg_required));
  169. requestFocus(signupInputPassword);
  170. return false;
  171. }
  172. signupInputLayoutPassword.setErrorEnabled(false);
  173. return true;
  174. }
  175.  
  176. private static boolean isEmailValid(String email) {
  177. return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
  178. }
  179.  
  180. private static boolean isPasswordValid(String password){
  181. return (password.length() >= 6);
  182. }
  183.  
  184. private void requestFocus(View view) {
  185. if (view.requestFocus()) {
  186. getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
  187. }
  188. }
  189.  
  190. @Override
  191. protected void onResume() {
  192. super.onResume();
  193. progressBar.setVisibility(View.GONE);
  194. }
  195.  
  196. private void signIn() {
  197. Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  198. startActivityForResult(signInIntent, RC_SIGN_IN);
  199. }
  200.  
  201. @Override
  202. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  203. super.onActivityResult(requestCode, resultCode, data);
  204.  
  205. // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
  206. if (requestCode == RC_SIGN_IN) {
  207. GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  208. if (result.isSuccess()){
  209. // Google Sign In was successful, authenticate with Firebase
  210. GoogleSignInAccount account = result.getSignInAccount();
  211. firebaseAuthWithGoogle(account);
  212. Intent intent = new Intent(SignUpActivity.this, UserActivity.class);
  213. startActivity(intent);
  214. finish();
  215. } else{
  216. setContentView(R.layout.activity_signup);
  217. }
  218. }
  219. }
  220. private void firebaseAuthWithGoogle(GoogleSignInAccount account){
  221. AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
  222. auth.signInWithCredential(credential)
  223. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  224. @Override
  225. public void onComplete(@NonNull Task<AuthResult> task) {
  226. if (task.isSuccessful()) {
  227. // Sign in success, update UI with the signed-in user's information
  228. Log.d(TAG, "signInWithCredential:success");
  229. FirebaseUser user = auth.getCurrentUser();
  230. UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder().setDisplayName("John Smith").build();
  231.  
  232. user.updateProfile(profileUpdates);
  233.  
  234. } else {
  235. // If sign in fails, display a message to the user.
  236. Log.w(TAG, "signInWithCredential:failure", task.getException());
  237. Toast.makeText(SignUpActivity.this, "Authentication failed.",
  238. Toast.LENGTH_SHORT).show();
  239.  
  240. }
  241.  
  242. // ...
  243. }
  244. });
  245.  
  246. }
  247.  
  248. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement