Advertisement
Guest User

MAINACTIVITY

a guest
Nov 20th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.28 KB | None | 0 0
  1. package com.example.pbwi.actifitapp;
  2.  
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.content.pm.PackageInfo;
  6. import android.content.pm.PackageManager;
  7. import android.content.pm.Signature;
  8. import android.support.annotation.NonNull;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.util.Base64;
  12. import android.util.Log;
  13. import android.util.Patterns;
  14. import android.view.View;
  15. import android.widget.Button;
  16. import android.widget.EditText;
  17. import android.widget.Toast;
  18.  
  19. import com.facebook.AccessToken;
  20. import com.facebook.CallbackManager;
  21. import com.facebook.FacebookCallback;
  22. import com.facebook.FacebookException;
  23. import com.facebook.login.LoginResult;
  24. import com.facebook.login.widget.LoginButton;
  25. import com.google.android.gms.auth.api.Auth;
  26. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  27. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  28. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  29. import com.google.android.gms.common.ConnectionResult;
  30. import com.google.android.gms.common.SignInButton;
  31. import com.google.android.gms.common.api.GoogleApiClient;
  32. import com.google.android.gms.tasks.OnCompleteListener;
  33. import com.google.android.gms.tasks.Task;
  34. import com.google.firebase.auth.AuthCredential;
  35. import com.google.firebase.auth.AuthResult;
  36. import com.google.firebase.auth.FacebookAuthProvider;
  37. import com.google.firebase.auth.FirebaseAuth;
  38. import com.google.firebase.auth.FirebaseUser;
  39. import com.google.firebase.auth.GoogleAuthProvider;
  40. import com.facebook.FacebookSdk;
  41. import com.facebook.appevents.AppEventsLogger;
  42.  
  43. import java.math.BigDecimal;
  44. import java.security.MessageDigest;
  45. import java.security.NoSuchAlgorithmException;
  46. import java.util.Currency;
  47.  
  48. public class MainActivity extends AppCompatActivity {
  49.  
  50. private static final String TAG = "MainActivity";
  51. Button guzik_rejestracji;
  52. SignInButton googleSignInButton;
  53. LoginButton loginFbButton;
  54.  
  55. //progress dialog
  56. private ProgressDialog progressDialog;
  57. //firebase auth object
  58. private FirebaseAuth firebaseAuth;
  59. private GoogleSignInOptions gso;
  60. private GoogleApiClient mGoogleSignInClient;
  61. private FirebaseAuth.AuthStateListener firebaseAuthListener;
  62. private CallbackManager mCallbackManager;
  63. //default value of request code
  64. static final int RC_SIGN_IN = 1;
  65. AppEventsLogger logger;
  66.  
  67. @Override
  68. protected void onStart() {
  69. super.onStart();
  70.  
  71. firebaseAuth.addAuthStateListener(firebaseAuthListener);
  72. }
  73.  
  74. @Override
  75. protected void onCreate(Bundle savedInstanceState) {
  76. super.onCreate(savedInstanceState);
  77. setContentView(R.layout.activity_main);
  78.  
  79. firebaseAuth = FirebaseAuth.getInstance();
  80. FacebookSdk.sdkInitialize(getApplicationContext());
  81. setControls();
  82. loginFbButton.setReadPermissions("email", "public_profile");
  83.  
  84. if (firebaseAuth.getCurrentUser() != null) {
  85. Intent intent=new Intent(MainActivity.this, ActivityDlaZalogowanych.class);
  86. intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
  87. startActivity(intent);
  88. finish();
  89.  
  90.  
  91. }
  92. // PackageInfo info;
  93. // try {
  94. // info = getPackageManager().getPackageInfo("com.example.pbwi.actifitapp", PackageManager.GET_SIGNATURES);
  95. // for (Signature signature : info.signatures) {
  96. // MessageDigest md;
  97. // md = MessageDigest.getInstance("SHA");
  98. // md.update(signature.toByteArray());
  99. // String something = new String(Base64.encode(md.digest(), 0));
  100. // //String something = new String(Base64.encodeBytes(md.digest()));
  101. // Log.e("hash key", something);
  102. // }
  103. // } catch (PackageManager.NameNotFoundException e1) {
  104. // Log.e("name not found", e1.toString());
  105. // } catch (NoSuchAlgorithmException e) {
  106. // Log.e("no such an algorithm", e.toString());
  107. // } catch (Exception e) {
  108. // Log.e("exception", e.toString());
  109. // }
  110. mCallbackManager = CallbackManager.Factory.create();
  111. googleSignInButton.setOnClickListener(new View.OnClickListener() {
  112. @Override
  113. public void onClick(View v) {
  114. signIn();
  115. }
  116. });
  117. //if you off the app, this listener now that you have acco on firebase and next time you dont need to login
  118. firebaseAuthListener = new FirebaseAuth.AuthStateListener() {
  119. @Override
  120. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  121. if(firebaseAuth.getCurrentUser() !=null){
  122. startActivity(new Intent(MainActivity.this, ActivityDlaZalogowanych.class));
  123. }
  124. }
  125. };
  126.  
  127. //configure google sign in
  128. gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  129. .requestIdToken(getString(R.string.default_web_client_id))
  130. .requestEmail()
  131. .build();
  132. // Build a GoogleSignInClient with the options specified by gso.
  133. mGoogleSignInClient = new GoogleApiClient.Builder(this)
  134. .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
  135. //if something went wrong
  136. @Override
  137. public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  138. Toast.makeText(MainActivity.this, getString(R.string.authGoWrong), Toast.LENGTH_SHORT).show();
  139. }
  140. })
  141. .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  142. .build();
  143.  
  144. loginFbButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
  145. @Override
  146. public void onSuccess(LoginResult loginResult) {
  147. Log.d(TAG, "facebook:onSuccess:" + loginResult);
  148. Toast.makeText(MainActivity.this,"Logging in with fb. Please wait",Toast.LENGTH_LONG).show();
  149. handleFacebookAccessToken(loginResult.getAccessToken());
  150. }
  151.  
  152. @Override
  153. public void onCancel() {
  154. Log.d(TAG, "facebook:onCancel");
  155. // [START_EXCLUDE]
  156.  
  157. // [END_EXCLUDE]
  158. }
  159.  
  160. @Override
  161. public void onError(FacebookException error) {
  162. Log.d(TAG, "facebook:onError", error);
  163. // [START_EXCLUDE]
  164.  
  165. // [END_EXCLUDE]
  166. }
  167. });
  168. // [END initialize_fblogin]
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. final Button button = (Button) findViewById(R.id.guzik_logowania_id);
  178. progressDialog = new ProgressDialog(this);
  179.  
  180.  
  181. button.setOnClickListener(new View.OnClickListener() {
  182. public void onClick(View v) {
  183. userLogin();
  184. }
  185.  
  186. });
  187. guzik_rejestracji = (Button) findViewById(R.id.guzik_rejestracja_id);
  188. guzik_rejestracji.setOnClickListener(new View.OnClickListener() {
  189. @Override
  190. public void onClick(View v) {
  191. Intent intent = new Intent(MainActivity.this, RegisterPanel.class);
  192. startActivity(intent);
  193. }
  194. });
  195.  
  196.  
  197.  
  198.  
  199.  
  200. }
  201. private void handleFacebookAccessToken(AccessToken token) {
  202. Log.d(TAG, "handleFacebookAccessToken:" + token);
  203. // [START_EXCLUDE silent]
  204.  
  205.  
  206. // [END_EXCLUDE]
  207.  
  208. AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
  209. firebaseAuth.signInWithCredential(credential)
  210. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  211. @Override
  212. public void onComplete(@NonNull Task<AuthResult> task) {
  213. if (task.isSuccessful()) {
  214. // Sign in success, update UI with the signed-in user's information
  215. Log.d(TAG, "signInWithCredential:success");
  216. FirebaseUser user = firebaseAuth.getCurrentUser();
  217. finish();
  218. startActivity(new Intent(getApplicationContext(), ActivityDlaZalogowanych.class));
  219. } else {
  220. // If sign in fails, display a message to the user.
  221. Log.w(TAG, "signInWithCredential:failure", task.getException());
  222. Toast.makeText(MainActivity.this, "Authentication failed.",
  223. Toast.LENGTH_SHORT).show();
  224.  
  225. }
  226.  
  227. // [START_EXCLUDE]
  228. // [END_EXCLUDE]
  229. }
  230. });
  231. }
  232.  
  233.  
  234.  
  235.  
  236.  
  237. //method for user login
  238. private void userLogin(){
  239.  
  240. EditText _email = (EditText) findViewById(R.id.input_email_id);
  241. EditText _password = (EditText) findViewById(R.id.input_haslo_id);
  242.  
  243. String email = _email.getText().toString().trim();
  244. String password = _password.getText().toString().trim();
  245.  
  246.  
  247. //checking if email and passwords are empty
  248. if (_email.getText().toString().length() == 0)
  249. _email.setError("Email required.");
  250. else if (!Patterns.EMAIL_ADDRESS.matcher(_email.getText().toString()).matches()) {
  251. _email.setError("This is not a valid email address.");
  252. }
  253. if (_password.getText().toString().length() == 0){
  254. _password.setError("Password required.");
  255. return;
  256. }
  257.  
  258. //if the email and password are not empty
  259. //displaying a progress dialog
  260.  
  261. progressDialog.setMessage("Please Wait...");
  262. progressDialog.show();
  263.  
  264. //logging in the user
  265. firebaseAuth.signInWithEmailAndPassword(email, password)
  266. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  267. @Override
  268. public void onComplete(@NonNull Task<AuthResult> task) {
  269. progressDialog.dismiss();
  270. //if the task is successfull
  271. if(task.isSuccessful()){
  272. //start the profile activity
  273. finish();
  274. startActivity(new Intent(getApplicationContext(), ActivityDlaZalogowanych.class));
  275. }
  276. else{
  277. Toast.makeText(getApplicationContext(), "Błędne dane", Toast.LENGTH_LONG).show();
  278. }
  279. }
  280. });
  281.  
  282. }
  283.  
  284. public void setControls(){
  285. googleSignInButton = (SignInButton) findViewById(R.id.sign_in_button);
  286. loginFbButton=(LoginButton)findViewById(R.id.login_button_fb);
  287. }
  288.  
  289. //Google Sign In methods
  290. private void signIn() {
  291. Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleSignInClient);
  292. startActivityForResult(signInIntent, RC_SIGN_IN);
  293. }
  294.  
  295. @Override
  296. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  297. super.onActivityResult(requestCode, resultCode, data);
  298.  
  299. // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
  300. if (requestCode == RC_SIGN_IN) {
  301. GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  302. if(result.isSuccess()) {
  303. //get google account
  304. GoogleSignInAccount account = result.getSignInAccount();
  305. firebaseAuthWithGoogle(account);
  306. } else {
  307. Toast.makeText(getApplicationContext(), getString(R.string.authGoWrong), Toast.LENGTH_LONG).show();
  308. }
  309. }else
  310. mCallbackManager.onActivityResult(requestCode, resultCode, data);
  311. }
  312.  
  313. private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
  314. AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
  315. firebaseAuth.signInWithCredential(credential)
  316. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  317. @Override
  318. public void onComplete(@NonNull Task<AuthResult> task) {
  319. if (task.isSuccessful()) {
  320. // Sign in success, update UI with the signed-in user's information
  321. Log.d("TAG", "signInWithCredential:success");
  322. FirebaseUser user = firebaseAuth.getCurrentUser();
  323. //updateUI(user);
  324. } else {
  325. // If sign in fails, display a message to the user.
  326. Log.w("TAG", "signInWithCredential:failure", task.getException());
  327. Toast.makeText(MainActivity.this, getString(R.string.authGoWrong),
  328. Toast.LENGTH_SHORT).show();
  329. // updateUI(null);
  330. }
  331.  
  332. // ...
  333. }
  334. });
  335. }
  336.  
  337. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement