Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.31 KB | None | 0 0
  1. /**
  2. * First activity to show (LOGIN/REGISTER)
  3. * Made by Arturo Salinas
  4. * Contact me if any issue...
  5. */
  6. package sofex.foodhausv1;
  7.  
  8. import android.content.Intent;
  9. import android.icu.util.Freezable;
  10. import android.nfc.Tag;
  11. import android.support.annotation.NonNull;
  12. import android.support.v7.app.AppCompatActivity;
  13. import android.os.Bundle;
  14. import android.util.Log;
  15. import android.view.View;
  16. import android.widget.Button;
  17. import android.widget.ImageButton;
  18. import android.widget.ProgressBar;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21. import java.util.Arrays;
  22.  
  23. import com.facebook.AccessToken;
  24. import com.facebook.CallbackManager;
  25. import com.facebook.FacebookCallback;
  26. import com.facebook.FacebookException;
  27. import com.facebook.login.LoginManager;
  28. import com.facebook.login.LoginResult;
  29. import com.facebook.login.widget.LoginButton;
  30. import com.google.android.gms.auth.api.Auth;
  31. import com.google.android.gms.auth.api.signin.GoogleSignIn;
  32. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  33. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  34. import com.google.android.gms.common.ConnectionResult;
  35. import com.google.android.gms.common.SignInButton;
  36. import com.google.android.gms.common.api.ApiException;
  37. import com.google.android.gms.common.api.GoogleApiClient;
  38. import com.google.android.gms.common.internal.SignInButtonImpl;
  39. import com.google.android.gms.tasks.OnCompleteListener;
  40. import com.google.android.gms.tasks.Task;
  41. import com.google.firebase.FirebaseApp;
  42. import com.google.firebase.auth.AuthCredential;
  43. import com.google.firebase.auth.AuthResult;
  44. import com.google.firebase.auth.FacebookAuthProvider;
  45. import com.google.firebase.auth.FirebaseAuth;
  46. import com.google.firebase.auth.FirebaseUser;
  47. import com.google.firebase.auth.GoogleAuthProvider;
  48.  
  49. import java.sql.Array;
  50.  
  51.  
  52. public class StarterActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {
  53. private GoogleApiClient mGoogleSignInClient;
  54. public static final int RC_SIGN_IN = 1;
  55.  
  56. private ProgressBar starter_progress;
  57. private FirebaseAuth mAuth;
  58. private FirebaseAuth.AuthStateListener mAuthListener;
  59. //Google Auth
  60. private Button btn_google;
  61. private GoogleApiClient mGoogleApiClient;
  62. //FB Auth
  63. private Button btn_fb;
  64. private CallbackManager mCallbackManager;
  65. //Forgot
  66. private TextView forgot_pass;
  67.  
  68. @Override
  69. protected void onCreate(Bundle savedInstanceState) {
  70. super.onCreate(savedInstanceState);
  71. setContentView(R.layout.activity_starter);
  72.  
  73. mAuth = FirebaseAuth.getInstance();
  74.  
  75. FirebaseApp.initializeApp(this);
  76. btn_fb = (Button)findViewById(R.id.btn_fb);
  77. forgot_pass = (TextView)findViewById(R.id.forgot_pass);
  78. forgot_pass.setOnClickListener(this);
  79.  
  80. starter_progress = (ProgressBar)findViewById(R.id.starter_progress);
  81. starter_progress.setVisibility(View.INVISIBLE);
  82. //Fb Auth
  83. // Initialize Facebook Login button
  84. mCallbackManager = CallbackManager.Factory.create();
  85. //FbAuth
  86. btn_fb.setOnClickListener(new View.OnClickListener() {
  87. @Override
  88. public void onClick(View view) {
  89. btn_fb.setEnabled(false);
  90. starter_progress.setVisibility(View.VISIBLE);
  91. LoginManager.getInstance().logInWithReadPermissions(StarterActivity.this, Arrays.asList("email","public_profile"));
  92. LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
  93. @Override
  94. public void onSuccess(LoginResult loginResult) {
  95. Log.d("Fb", "facebook:onSuccess:" + loginResult);
  96. handleFacebookAccessToken(loginResult.getAccessToken());
  97. }
  98. @Override
  99. public void onCancel() {
  100. Log.d("Fb", "facebook:onCancel");
  101. }
  102.  
  103. @Override
  104. public void onError(FacebookException error) {
  105. Log.d("Fb", "facebook:onError", error);
  106. }
  107. });
  108.  
  109. }
  110. });
  111. //Google auth
  112. btn_google = (Button) findViewById(R.id.btn_google);
  113. // Configure Google Sign In
  114. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  115. .requestIdToken(getString(R.string.default_web_client_id))
  116. .requestEmail()
  117. .build();
  118. mGoogleApiClient = new GoogleApiClient.Builder(getApplicationContext()).enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
  119. @Override
  120. public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  121. //Error
  122. }
  123. })
  124. .addApi(Auth.GOOGLE_SIGN_IN_API,gso)
  125. .build();
  126.  
  127. btn_google.setOnClickListener(new View.OnClickListener() {
  128. @Override
  129. public void onClick(View view) {
  130. signIn();
  131. }
  132. });
  133.  
  134. mAuthListener = new FirebaseAuth.AuthStateListener() {
  135. @Override
  136. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  137. if(firebaseAuth.getCurrentUser() != null){
  138. startActivity(new Intent(StarterActivity.this, DashboardActivity.class));
  139. }
  140. }
  141. };
  142.  
  143. Button btnStartLogin = findViewById(R.id.buttonLogin);
  144. btnStartLogin.setOnClickListener(new View.OnClickListener() {
  145. @Override
  146. public void onClick(View v) {
  147. logIn();
  148. }
  149. });
  150. Button btnStartRegister = findViewById(R.id.buttonRegister);
  151. btnStartRegister.setOnClickListener(new View.OnClickListener() {
  152. @Override
  153. public void onClick(View v) {
  154. toRegisterPhone();
  155. }
  156. });
  157.  
  158. }
  159. //Google auth
  160. private void signIn() {
  161. Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  162. startActivityForResult(signInIntent, RC_SIGN_IN);
  163. }
  164.  
  165. //Fb and google auth
  166. @Override
  167. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  168. super.onActivityResult(requestCode, resultCode, data);
  169. Log.d("Google", "onActivityResult:" + requestCode + ":" + resultCode + ":" + data);
  170.  
  171. if (requestCode == RC_SIGN_IN) {
  172. Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
  173. try {
  174. // Google Sign In was successful, authenticate with Firebase
  175. GoogleSignInAccount account = task.getResult(ApiException.class);
  176. firebaseAuthWithGoogle(account);
  177. } catch (ApiException e) {
  178. // Google Sign In failed, update UI appropriately
  179. Log.w("Google", "Google sign in failed", e);
  180. // ...
  181. }
  182. }else{
  183. //If not request code is RC_SIGN_IN it must be facebook
  184. mCallbackManager.onActivityResult(requestCode, resultCode, data);
  185. }
  186. }
  187.  
  188. private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
  189. Log.d("Google", "firebaseAuthWithGoogle:" + acct.getId());
  190. starter_progress.setVisibility(View.VISIBLE);
  191. AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
  192. mAuth.signInWithCredential(credential)
  193. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  194. @Override
  195. public void onComplete(@NonNull Task<AuthResult> task) {
  196. if (task.isSuccessful()) {
  197. // Sign in success, update UI with the signed-in user's information
  198. Log.d("google", "signInWithCredential:success");
  199. FirebaseUser user = mAuth.getCurrentUser();
  200. updateUI();
  201. starter_progress.setVisibility(View.INVISIBLE);
  202. } else {
  203. // If sign in fails, display a message to the user.
  204. Log.w("Google", "signInWithCredential:failure", task.getException());
  205. starter_progress.setVisibility(View.INVISIBLE);
  206. }
  207.  
  208. }
  209. });
  210. }
  211.  
  212. @Override
  213. public void onStart() {
  214. super.onStart();
  215. // Check if user is signed in (non-null) and update UI accordingly.
  216. FirebaseUser currentUser = mAuth.getCurrentUser();
  217. if(currentUser != null){
  218. updateUI();
  219. }
  220. }
  221. //Fb auth sends to dash
  222. private void updateUI() {
  223. //Lgoin
  224. sendToDash();
  225.  
  226. }
  227. //FB Auth
  228. private void handleFacebookAccessToken(AccessToken token) {
  229. Log.d("Fb", "handleFacebookAccessToken:" + token);
  230. AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
  231. mAuth.signInWithCredential(credential)
  232. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  233. @Override
  234. public void onComplete(@NonNull Task<AuthResult> task) {
  235. if (task.isSuccessful()) {
  236. // Sign in success, update UI with the signed-in user's information
  237. Log.d("Fb", "signInWithCredential:success");
  238. FirebaseUser user = mAuth.getCurrentUser();
  239. btn_fb.setEnabled(true);
  240. starter_progress.setVisibility(View.INVISIBLE);
  241. updateUI();
  242. } else {
  243. // If sign in fails, display a message to the user.
  244. Log.w("Fb", "signInWithCredential:failure", task.getException());
  245. btn_fb.setEnabled(true);
  246. starter_progress.setVisibility(View.INVISIBLE);
  247. }
  248. }
  249. });
  250. }
  251. @Override
  252. public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  253. Toast.makeText(StarterActivity.this, "Fallo en conexión con google...", Toast.LENGTH_LONG).show();
  254. }
  255.  
  256.  
  257. private void logIn() {
  258. Intent intent = new Intent(StarterActivity.this, LoginActivity.class);
  259. startActivity(intent);
  260. }
  261. private void sendToDash() {
  262. Intent intent = new Intent(StarterActivity.this, DashboardActivity.class);
  263. startActivity(intent);
  264. finish();
  265. }
  266.  
  267. private void toRegisterPhone() {
  268. Intent registerIntent = new Intent(StarterActivity.this, RegisterPhoneActivity.class);
  269. startActivity(registerIntent);
  270. }
  271.  
  272. @Override
  273. public void onClick(View view) {
  274. switch(view.getId()){
  275. case R.id.forgot_pass:
  276. Intent registerIntent = new Intent(StarterActivity.this, ForgotPassword.class);
  277. startActivity(registerIntent);
  278. break;
  279. }
  280. }
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement