Advertisement
Roctik

Untitled

May 17th, 2019
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.22 KB | None | 0 0
  1. package com.roctik.ufeg.view;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.SharedPreferences;
  7. import android.os.Bundle;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.util.Log;
  10. import android.widget.EditText;
  11. import android.widget.ImageButton;
  12. import android.widget.Toast;
  13.  
  14. import com.facebook.AccessToken;
  15. import com.facebook.CallbackManager;
  16. import com.facebook.FacebookCallback;
  17. import com.facebook.FacebookException;
  18. import com.facebook.FacebookSdk;
  19. import com.facebook.GraphRequest;
  20. import com.facebook.login.LoginResult;
  21. import com.facebook.login.widget.LoginButton;
  22. import com.google.android.gms.auth.api.signin.GoogleSignIn;
  23. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  24. import com.google.android.gms.auth.api.signin.GoogleSignInClient;
  25. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  26. import com.google.android.gms.common.api.ApiException;
  27. import com.google.android.gms.tasks.Task;
  28. import com.roctik.ufeg.R;
  29. import com.roctik.ufeg.model.Login;
  30. import com.roctik.ufeg.model.PostLogin;
  31. import com.roctik.ufeg.model.PostSignUp;
  32. import com.roctik.ufeg.model.SignUp;
  33. import com.roctik.ufeg.presenter.LoginPresenter;
  34. import com.roctik.ufeg.presenter.SignUpPresenter;
  35.  
  36. import org.json.JSONException;
  37.  
  38. import java.util.Objects;
  39.  
  40. import info.hoang8f.widget.FButton;
  41.  
  42. public class LoginActivity extends AppCompatActivity implements ViewLogin, ViewSignUp {
  43.  
  44.     public static final String APP_PREFERENCES = "mysettings";
  45.     public static final String APP_PREFERENCES_TOKEN = "token";
  46.     private static final String TAG = LoginActivity.class.getSimpleName();
  47.     SharedPreferences mSettings;
  48.     FButton signIn;
  49.     FButton signUp;
  50.     EditText edtEmail;
  51.     EditText edtPass;
  52.     ImageButton facebook, google;
  53.     SignUpPresenter presenterSignUp;
  54.     LoginPresenter presenter;
  55.  
  56.     private GoogleSignInClient googleSignInClient;
  57.     private CallbackManager callbackManager;
  58.     LoginButton loginButton;
  59.  
  60.     @Override
  61.     protected void onCreate(Bundle savedInstanceState) {
  62.         super.onCreate(savedInstanceState);
  63.  
  64.         mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
  65.  
  66.  
  67.         FacebookSdk.sdkInitialize(getApplicationContext());
  68.         callbackManager = CallbackManager.Factory.create();
  69.  
  70.         setContentView(R.layout.activity_login);
  71.         signIn = findViewById(R.id.btnSignIn);
  72.         signUp = findViewById(R.id.btnSignUp);
  73.         edtEmail = findViewById(R.id.edtEmail);
  74.         edtPass = findViewById(R.id.edtPassword);
  75.         loginButton = findViewById(R.id.login_button);
  76.  
  77.         //instagram = findViewById(R.id.instagram);
  78.         facebook = findViewById(R.id.facebook);
  79.         google = findViewById(R.id.google);
  80.  
  81.         presenter = new LoginPresenter();
  82.         presenter.setViewLogin(this);
  83.  
  84.         presenterSignUp = new SignUpPresenter();
  85.         presenterSignUp.setView(this);
  86.  
  87.         signUp.setOnClickListener((v) -> {
  88.             Intent signInActivity = new Intent(this, RegistrationActivity.class);
  89.             startActivity(signInActivity);
  90.         });
  91.  
  92.         signIn.setOnClickListener((v) -> {
  93.             PostLogin postLogin = new PostLogin();
  94.             postLogin.setEmail(Objects.requireNonNull(edtEmail.getText()).toString());
  95.             postLogin.setPassword(Objects.requireNonNull(edtPass.getText()).toString());
  96.             presenter.getLogin(postLogin);
  97.         });
  98.  
  99.  
  100.         loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
  101.             @Override
  102.             public void onSuccess(LoginResult loginResult) {
  103.                 AccessToken accessToken = loginResult.getAccessToken();
  104.                 useLoginInformation(accessToken);
  105.             }
  106.  
  107.             @Override
  108.             public void onCancel() {
  109.  
  110.             }
  111.  
  112.             @Override
  113.             public void onError(FacebookException error) {
  114.  
  115.             }
  116.         });
  117.         facebook.setOnClickListener((v) -> loginButton.performClick());
  118.  
  119.  
  120.         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  121.                 .requestEmail()
  122.                 .build();
  123.         googleSignInClient = GoogleSignIn.getClient(this, gso);
  124.  
  125.         google.setOnClickListener((v) -> {
  126.             Intent signInIntent = googleSignInClient.getSignInIntent();
  127.             startActivityForResult(signInIntent, 101);
  128.         });
  129.     }
  130.  
  131.     @Override
  132.     public void onActivityResult(int requestCode, int resultCode, Intent data) {
  133.  
  134.         super.onActivityResult(requestCode, resultCode, data);
  135.         callbackManager.onActivityResult(requestCode, resultCode, data);
  136.         if (resultCode == Activity.RESULT_OK)
  137.             if (requestCode == 101) {
  138.                 try {
  139.                     Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
  140.                     GoogleSignInAccount account = task.getResult(ApiException.class);
  141.                     PostLogin postLogin = new PostLogin();
  142.  
  143.                     postLogin.setEmail(Objects.requireNonNull(account).getEmail());
  144.                     postLogin.setPassword(account.getDisplayName() + account.getEmail());
  145.  
  146.                     presenter.getLogin(postLogin);
  147.  
  148.                     PostSignUp postSignUp = new PostSignUp();
  149.                     postSignUp.setName(account.getDisplayName());
  150.                     postSignUp.setEmail(account.getEmail());
  151.                     postSignUp.setPassword(account.getDisplayName() + account.getEmail());
  152.  
  153.                     presenterSignUp.getSignUp(postSignUp);
  154.                 } catch (ApiException e) {
  155.                     Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
  156.                 }
  157.             }
  158.  
  159.     }
  160.  
  161.     private void useLoginInformation(AccessToken accessToken) {
  162.         //OnCompleted is invoked once the GraphRequest is successful
  163.         GraphRequest request = GraphRequest.newMeRequest(accessToken, (object, response) -> {
  164.             try {
  165.                 System.out.println(object.names());
  166.                 String name = object.getString("name");
  167.                 String email = object.getString("id");
  168.  
  169.                 PostSignUp postSignUp = new PostSignUp();
  170.                 postSignUp.setName(name);
  171.                 postSignUp.setEmail(email + "@facebook.com");
  172.                 postSignUp.setPassword(name + email);
  173.                 presenterSignUp.getSignUp(postSignUp);
  174.  
  175.                 PostLogin postLogin = new PostLogin();
  176.  
  177.                 postLogin.setEmail(email + "@facebook.com");
  178.                 postLogin.setPassword(name + email);
  179.  
  180.                 presenter.getLogin(postLogin);
  181.  
  182.             } catch (JSONException e) {
  183.                 e.printStackTrace();
  184.             }
  185.         });
  186.         // We set parameters to the GraphRequest using a Bundle.
  187.         Bundle parameters = new Bundle();
  188.         parameters.putString("fields", "id,name,email,picture.width(200)");
  189.         request.setParameters(parameters);
  190.         // Initiate the GraphRequest
  191.         request.executeAsync();
  192.     }
  193.  
  194.     @Override
  195.     public void getLogin(Login login) {
  196.         if (login.getStatus().equals("ok")) {
  197.             Intent main = new Intent(this, MainActivity.class);
  198.             startActivity(main);
  199.             SharedPreferences.Editor editor = mSettings.edit();
  200.             editor.putString(APP_PREFERENCES_TOKEN, login.getToken());
  201.             editor.apply();
  202.             finish();
  203.         } else {
  204.             Toast.makeText(this, "Ошибка, проверьте логин и пароль", Toast.LENGTH_LONG).show();
  205.         }
  206.     }
  207.  
  208.     @Override
  209.     public void getSignUp(SignUp signUp) {
  210.         System.out.println(signUp.getStatus());
  211.         if (signUp.getStatus().equals("ok")) {
  212.             SharedPreferences.Editor editor = mSettings.edit();
  213.             editor.putString(APP_PREFERENCES_TOKEN, signUp.getToken());
  214.             editor.apply();
  215.             Intent main = new Intent(this, MainActivity.class);
  216.             startActivity(main);
  217.             finish();
  218.         } else {
  219.             Toast.makeText(this, "Ошибка, попробуйте снова", Toast.LENGTH_LONG).show();
  220.         }
  221.     }
  222.  
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement