Advertisement
Guest User

Loginn

a guest
Jun 15th, 2016
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 22.27 KB | None | 0 0
  1. package com.example.alex.helppeopletogether.registration;
  2.  
  3.  
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.IntentSender;
  7. import android.net.Uri;
  8. import android.os.Bundle;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.EditText;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16.  
  17. import com.example.alex.helppeopletogether.R;
  18. import com.example.alex.helppeopletogether.fragmentsFormNavigationDrawer.NewsNavigationDrawer;
  19. import com.example.alex.helppeopletogether.retrofit.RegistrationResponseFromServer;
  20. import com.example.alex.helppeopletogether.retrofit.Retrofit;
  21. import com.facebook.AccessToken;
  22. import com.facebook.CallbackManager;
  23. import com.facebook.FacebookAuthorizationException;
  24. import com.facebook.FacebookCallback;
  25. import com.facebook.FacebookException;
  26. import com.facebook.FacebookSdk;
  27. import com.facebook.Profile;
  28. import com.facebook.ProfileTracker;
  29. import com.facebook.login.LoginManager;
  30. import com.facebook.login.LoginResult;
  31.  
  32. import com.google.android.gms.auth.api.Auth;
  33. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  34. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  35. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  36. import com.google.android.gms.common.ConnectionResult;
  37. import com.google.android.gms.common.SignInButton;
  38. import com.google.android.gms.common.api.GoogleApiClient;
  39. import com.google.gson.Gson;
  40. import com.vk.sdk.VKAccessToken;
  41. import com.vk.sdk.VKCallback;
  42. import com.vk.sdk.VKScope;
  43. import com.vk.sdk.VKSdk;
  44. import com.vk.sdk.api.VKApi;
  45. import com.vk.sdk.api.VKApiConst;
  46. import com.vk.sdk.api.VKError;
  47. import com.vk.sdk.api.VKParameters;
  48. import com.vk.sdk.api.VKRequest;
  49. import com.vk.sdk.api.VKResponse;
  50. import com.vk.sdk.api.model.VKApiUserFull;
  51. import com.vk.sdk.api.model.VKList;
  52. import com.vk.sdk.util.VKUtil;
  53.  
  54. import java.util.Arrays;
  55. import java.util.LinkedHashMap;
  56. import java.util.List;
  57.  
  58. import retrofit.Callback;
  59. import retrofit.RetrofitError;
  60. import retrofit.client.Response;
  61.  
  62.  
  63. public class Login extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener {
  64.     private static final int RC_SIGN_IN = 0;
  65.     private static final String TAG = "Login";
  66.     private static final int PROFILE_PIC_SIZE = 400;
  67.     public static Integer userId;
  68.     LoginManager loginManager;
  69.     Context context;
  70.     String UserPhoto;
  71.     Profile profile;
  72.     private int tokin;
  73.     private EditText email;
  74.     private EditText password;
  75.     private Button buttonNext, facebook, vk, googlePlus;
  76.     private TextView buttonNextStepRegistration;
  77.     private Intent intentNextStep;
  78.     private LinkedHashMap<String, String> loginData, socialUserData;
  79.     private Integer responseFromServiseLogin, responseFromServiseSocialNetwork;
  80.     private CallbackManager callbackManager;
  81.     private FacebookCallback<LoginResult> mCallback;
  82.     private String[] scope = new String[]{VKScope.EMAIL, VKScope.PHOTOS, VKScope.MESSAGES, VKScope.FRIENDS};
  83.     private String vkEmail, vkId, vkFirstName, vkSecondName, facebookFirstName, facebookSecondName, facebookId, token, fullName;
  84.     private GoogleApiClient mGoogleApiClient;
  85.     private boolean mIntentInProgress;
  86.     private boolean mSignInClicked;
  87.     private ConnectionResult mConnectionResult;
  88.     private SignInButton btnSignIn;
  89.     private String facebookSocialName, vkSocialName, googleSocialName, googleFirstName, googleSecondName, googleId;
  90.     private ProfileTracker profileTracker;
  91.     public   PrefManager prefManager;
  92.     private String userEmail, userPassword, UserIdOfSocialNetwork;
  93.  
  94.  
  95.  
  96.     @Override
  97.     protected void onCreate(Bundle savedInstanceState) {
  98.         super.onCreate(savedInstanceState);
  99.         prefManager = new PrefManager(getApplication());
  100.         loginGoogle();
  101.         FacebookSdk.sdkInitialize(getApplicationContext());
  102.         callbackManager = CallbackManager.Factory.create();
  103.         String[] fingerprints = VKUtil.getCertificateFingerprint(this, this.getPackageName());
  104.         System.out.println(Arrays.toString(fingerprints));
  105.         loginManager = LoginManager.getInstance();
  106.         context = getApplicationContext();
  107.         if (prefManager.getAuthUserValue().length() == 5) {
  108. //            GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  109. //                    .requestEmail()
  110. //                    .build();
  111. //            mGoogleApiClient = new GoogleApiClient.Builder(this)
  112. //
  113. //                    .enableAutoManage(this, this)
  114. //                    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  115. //                    .build();
  116.  
  117.             Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  118.  
  119.             startActivityForResult(signInIntent, RC_SIGN_IN);
  120.  
  121.         }
  122.  
  123. //        if ((prefManager.getAuthUserValue().length() == 2)||(prefManager.getAuthUserValue().length() == 3)||(prefManager.getAuthUserValue().length() == 4)||(prefManager.getAuthUserValue().length() == 5)) {
  124.         if ((1 < prefManager.getAuthUserValue().length()) & (prefManager.getAuthUserValue().length() < 5)) {
  125.             checkLoginOnStart();
  126.  
  127.         }
  128.     else {
  129.         setContentView(R.layout.login);
  130.         email = (EditText) findViewById(R.id.login_email);
  131.         facebook = (Button) findViewById(R.id.login_button_facebook);
  132.         vk = (Button) findViewById(R.id.login_button_vk);
  133.         googlePlus = (Button) findViewById(R.id.login_button_google_plus);
  134.         password = (EditText) findViewById(R.id.login_password);
  135.         buttonNext = (Button) findViewById(R.id.login_button_login);
  136.         buttonNextStepRegistration = (TextView) findViewById(R.id.login_view_registration);
  137.         buttonNext.setOnClickListener(this);
  138.         vk.setOnClickListener(this);
  139.         facebook.setOnClickListener(this);
  140.         googlePlus.setOnClickListener(this);
  141.         buttonNextStepRegistration.setOnClickListener(this);
  142.     }
  143.  
  144.  
  145.     }
  146.  
  147.  
  148.  
  149.     private void checkLoginOnStart() {
  150.         tokin = prefManager.getAuthUserValue().length();
  151.         if ( tokin == 2) {
  152.             userEmail = prefManager.getEmail();
  153.             userPassword = prefManager.getPass();
  154.             prefManager.isUserLogedOut();
  155.             GetToNewsLine();
  156.         }
  157.         else if ( tokin == 3) {
  158.  
  159.             facebookFirstName = prefManager.getEmail();
  160.             facebookSecondName = prefManager.getPass();
  161.             facebookId = prefManager.getSsocialName();
  162.             facebookId = prefManager.getid();
  163.             facebookSocialName = "Facebook";
  164.             UserPhoto = prefManager.FotoProfile();
  165.             socialNetworksRegistration(facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
  166.  
  167.  
  168.         }
  169.         else if ( tokin == 4) {
  170.             vkFirstName = prefManager.getEmail();
  171.             vkSecondName = prefManager.getPass();
  172.             vkSocialName = prefManager.getSsocialName();
  173.             vkId = prefManager.getid();
  174.             vkSocialName = "Vk";
  175.             socialNetworksRegistration(vkFirstName, vkSecondName, vkSocialName, vkId);
  176.         }
  177. //        else if ( tokin == 5) {
  178. //
  179. //
  180. //
  181. //
  182. //
  183. //
  184. //
  185. ////            socialNetworksRegistration(googleFirstName, googleSecondName, googleSocialName, googleId);
  186. //
  187. ////            Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  188. ////            startActivityForResult(signInIntent, RC_SIGN_IN);
  189. //        }
  190.     }
  191.     private void loginGoogle() {
  192.         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  193.                 .requestEmail()
  194.                 .requestId()
  195.                 .requestProfile()
  196.                 .build();
  197.         mGoogleApiClient = new GoogleApiClient.Builder(this)
  198.                 .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
  199.                 .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  200.                 .build();
  201.     }
  202.  
  203.     @Override
  204.     protected void onStart() {
  205.         super.onStart();
  206.         if (mGoogleApiClient != null)
  207.             mGoogleApiClient.connect();
  208.     }
  209.  
  210.     @Override
  211.     protected void onPause() {
  212.         super.onPause();
  213.         if ( (1 > prefManager.getAuthUserValue().length()) || (prefManager.getAuthUserValue().length() > 4)){//
  214.         email.setText("");
  215.         password.setText("");
  216.     }
  217.     }
  218.  
  219.     @Override
  220.     protected void onStop() {
  221.         super.onStop();
  222.         if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
  223.             mGoogleApiClient.disconnect();
  224.         }
  225.         if ( (1 > prefManager.getAuthUserValue().length()) || (prefManager.getAuthUserValue().length() > 4)){
  226.         email.setText("");
  227.         password.setText("");
  228.         }
  229.     }
  230.  
  231.     @Override
  232.     public void onClick(View v) {
  233.         switch (v.getId()) {
  234.             case R.id.login_button_login:
  235.                 checkData();
  236.  
  237.                 break;
  238.             case R.id.login_view_registration:
  239.                 intentNextStep = new Intent(Login.this, Registration.class);
  240.                 startActivity(intentNextStep);
  241.                 break;
  242.             case R.id.login_button_facebook:
  243.                 loginFacebook();
  244.                 break;
  245.  
  246.             case R.id.login_button_vk:
  247.                 VKSdk.login(this, scope);
  248.                 break;
  249.  
  250.             case R.id.login_button_google_plus:
  251.                 Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  252.                 startActivityForResult(signInIntent, RC_SIGN_IN);
  253.                 break;
  254.  
  255.         }
  256.     }
  257.  
  258.     private void loginFacebook() {
  259.         loginManager.logInWithReadPermissions(this, Arrays.asList(new String[]{"public_profile", "user_friends"}));
  260.  
  261.         loginManager.registerCallback(callbackManager,
  262.                 new FacebookCallback<LoginResult>() {
  263.  
  264.                     @Override
  265.  
  266.                     public void onSuccess(LoginResult loginResult) {
  267.                         if (Profile.getCurrentProfile() == null) {
  268.                             profileTracker = new ProfileTracker() {
  269.                                 @Override
  270.                                 protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
  271.                                     facebookFirstName = currentProfile.getFirstName();
  272.                                     facebookSecondName = currentProfile.getLastName();
  273.                                     facebookId = currentProfile.getId();
  274.                                     profileTracker.stopTracking();
  275.                                     facebookSocialName = "Facebook";
  276.                                     prefManager.saveLoginDetails("123", facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
  277.                                     socialNetworksRegistration(facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
  278.                                 }
  279.                             };
  280.                         } else {
  281.                             profile = Profile.getCurrentProfile();
  282.                             facebookFirstName = profile.getFirstName();
  283.                             facebookSecondName = profile.getLastName();
  284.                             facebookId = profile.getId();
  285.                             facebookSocialName = "Facebook";
  286.                             prefManager.saveLoginDetails("123", facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
  287.                             socialNetworksRegistration(facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
  288.                         }
  289.                         UserPhoto = profile.getProfilePictureUri(200,200).toString();
  290.                         prefManager.saveFoto(UserPhoto);
  291.  
  292.                     }
  293.  
  294.                     @Override
  295.                     public void onCancel() {
  296.                         Toast.makeText(Login.this, "у вас, не получилось авторизироваться через Facebook, попробуйте еще раз"
  297.                                 , Toast.LENGTH_LONG).show();
  298.                     }
  299.  
  300.                     @Override
  301.                     public void onError(FacebookException exception) {
  302.                         if (exception instanceof FacebookAuthorizationException) {
  303.                             if (AccessToken.getCurrentAccessToken() != null) {
  304.                                 LoginManager.getInstance().logOut();
  305.                             }
  306.                         }
  307.                     }
  308.  
  309.                 });
  310.     }
  311.  
  312.     public void socialNetworksRegistration(String firstName, String secondName, String nameSocial, String idSocial) {
  313.         socialUserData = new LinkedHashMap<>();
  314.         socialUserData.put("first_name", firstName);
  315.         socialUserData.put("second_name", secondName);
  316.         socialUserData.put("social_network", nameSocial);
  317.         socialUserData.put("social_id", String.valueOf(idSocial));
  318.         Retrofit.sendSocialNetworks(socialUserData, new Callback<RegistrationResponseFromServer>() {
  319.             @Override
  320.             public void success(RegistrationResponseFromServer registrationResponseFromServer, Response response) {
  321.                 if (registrationResponseFromServer == null) {
  322.                     Toast.makeText(Login.this, R.string.error_data_from_server, Toast.LENGTH_LONG).show();
  323.                 } else {
  324.                     responseFromServiseSocialNetwork = registrationResponseFromServer.response;
  325.                     userId = registrationResponseFromServer.user_id;
  326.                     fullName = registrationResponseFromServer.full_name;
  327.  
  328.                     if (responseFromServiseSocialNetwork == 1) {
  329.                         newsFragment();
  330.  
  331.                     } else if (responseFromServiseSocialNetwork == 2) {
  332.                         intentNextStep = new Intent(Login.this, Agreement.class);
  333.                         startActivity(intentNextStep);
  334.                     }
  335.                 }
  336.             }
  337.  
  338.             @Override
  339.             public void failure(RetrofitError error) {
  340.                 Toast.makeText(Login.this, "Данные пользователя соц сети не отправились", Toast.LENGTH_LONG).show();
  341.             }
  342.         });
  343.     }
  344.  
  345.     private void newsFragment() {
  346.         Intent intent = new Intent(Login.this, NewsNavigationDrawer.class);
  347.         intent.putExtra("fullName", fullName);
  348.         intent.putExtra("foto", UserPhoto);
  349.         //intent.putExtra("userId",userId);
  350.         startActivity(intent);
  351.     }
  352.  
  353.  
  354.     @Override
  355.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  356.  
  357.         if (requestCode == RC_SIGN_IN) {
  358.             GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  359.             handleSignInResult(result);
  360.         }
  361.         if (!VKSdk.onActivityResult(requestCode, resultCode, data, new VKCallback<VKAccessToken>() {
  362.             @Override
  363.             public void onResult(final VKAccessToken res) {
  364.                 vkEmail = res.email;
  365.                 vkId = res.userId;
  366.  
  367.                 VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.FIELDS, VKApiConst.PHOTO, "first_name,last_name", "photo_id"));
  368.                 request.executeSyncWithListener(new VKRequest.VKRequestListener()
  369.                     {
  370.                     @Override
  371.                     public void onError(VKError error) {
  372.                         super.onError(error);
  373.                         Toast.makeText(Login.this, "Все плохо", Toast.LENGTH_LONG).show();
  374.                     }
  375.  
  376.                     @Override
  377.                     public void onComplete(VKResponse response) {
  378.                         super.onComplete(response);
  379.                         VKList<VKApiUserFull> list = (VKList<VKApiUserFull>) response.parsedModel;
  380.                         VKApiUserFull user = list.get(0);
  381.                         String json = response.responseString;
  382.                         vkjson(json);
  383.  
  384.                         vkSocialName = "Vk";
  385.                         prefManager.saveLoginDetails("1234", vkFirstName, vkSecondName, vkSocialName, vkId);
  386.  
  387.                         socialNetworksRegistration(vkFirstName, vkSecondName, vkSocialName, vkId);
  388.  
  389.                     }
  390.  
  391.                 });
  392.             }
  393.  
  394.             @Override
  395.             public void onError(VKError error) {
  396.  
  397.                 Toast.makeText(getApplicationContext(), "у вас, не получилось авторизироваться через VK, попробуйте еще раз", Toast.LENGTH_LONG).show();
  398.             }
  399.         }))
  400.  
  401.         {
  402.             callbackManager.onActivityResult(requestCode, resultCode, data);
  403.             super.onActivityResult(requestCode, resultCode, data);
  404.  
  405.         }
  406.  
  407.  
  408.     }
  409.  
  410.     private void vkjson(String json) {
  411.         Gson gson = new Gson();
  412.         VkArrayDates vkArrayDates = gson.fromJson(json, VkArrayDates.class);
  413.         List<VkPersonDates> data = vkArrayDates.getResponse();
  414.         VkPersonDates name = data.get(0);
  415.         vkFirstName = name.getFirst_name();
  416.         vkSecondName = name.getLast_name();
  417.     }
  418.  
  419.  
  420.     public void checkData() {
  421.         Registration loginEmail = new Registration();
  422.         if (loginEmail.resultRegularExprensionsEmail(email) == false || password.getText().length() < 6) {
  423.             Toast.makeText(Login.this, "Не правильно введен логин или пароль", Toast.LENGTH_LONG).show();
  424. //        } else if (email.getText().toString().isEmpty() || password.getText().toString().isEmpty()) {
  425. //            Toast.makeText(Login.this, "Enter value in all field", Toast.LENGTH_SHORT).show();
  426.         } else {
  427. //            saveDataFromAccount.setPreferences(Login.this, "status", "1");
  428. //        String status = saveDataFromAccount.getPreferences(Login.this, "status");
  429.             userEmail = String.valueOf(email.getText());
  430.             userPassword = String.valueOf(password.getText());
  431.             prefManager.saveLoginDetails("12", email.getText().toString(), password.getText().toString(), "", "");
  432.  
  433.             GetToNewsLine();
  434.         }
  435.     }
  436.  
  437.     public void GetToNewsLine(){
  438.         loginData = new LinkedHashMap<>();
  439.         loginData.put("email", userEmail);
  440.         loginData.put("password", userPassword);
  441.         Retrofit.sendLoginData(loginData, new Callback<RegistrationResponseFromServer>() {
  442.             @Override
  443.             public void success(RegistrationResponseFromServer responseLogin, Response response) {
  444.                 if (responseLogin == null) {
  445.                     Toast.makeText(Login.this, R.string.error_data_from_server, Toast.LENGTH_LONG).show();
  446.                 } else {
  447.                     Toast.makeText(getApplication(), "Data sent", Toast.LENGTH_SHORT).show();
  448.                     responseFromServiseLogin = responseLogin.response_login;
  449.                     userId = responseLogin.user_id;
  450.                     fullName = responseLogin.full_name;
  451.                     if (responseFromServiseLogin == 1) {
  452.                         Toast.makeText(Login.this, "Не правильно введен email или пароль", Toast.LENGTH_LONG).show();
  453.                     } else if (responseFromServiseLogin == 2) {
  454.  
  455.  
  456.                         newsFragment();
  457.                         //Toast.makeText(Login.this,"Это успех!!!",Toast.LENGTH_LONG).show();
  458.                     }
  459.                 }
  460.             }
  461.  
  462.             @Override
  463.             public void failure(RetrofitError error) {
  464.                 System.out.println(error.getMessage());
  465.                 Toast.makeText(getApplication(), "Data don't sent. Check internet connection", Toast.LENGTH_LONG).show();
  466.             }
  467.         });
  468.  
  469.     }
  470.  
  471. //
  472. //    public void checkDataAutologin() {
  473. //
  474. ////        saveDataFromAccount.setPreferences(Login.this, "status", "1");
  475. ////        String status = saveDataFromAccount.getPreferences(Login.this, "status");
  476. //
  477. //        loginData = new LinkedHashMap<>();
  478. //        loginData.put("email", userEmail);
  479. //        loginData.put("password", userPassword);
  480. //        newsFragment();
  481. //                        //Toast.makeText(Login.this,"Это успех!!!",Toast.LENGTH_LONG).show();
  482. //
  483. //    }
  484.  
  485.     private void handleSignInResult(GoogleSignInResult result) {
  486. //        result.getSignInAccount().getEmail();
  487.         //      result.getSignInAccount().getId();
  488.         Log.d(TAG, "handleSignInResult:" + result.isSuccess());
  489.         if (result.isSuccess()) {
  490.  
  491.             GoogleSignInAccount acct = result.getSignInAccount();
  492.             String email = acct.getEmail();
  493.             googleId = acct.getId();
  494.             Uri UserPhoto = acct.getPhotoUrl();
  495.             if (UserPhoto != null){ prefManager.saveFoto(UserPhoto.toString());}
  496.             String name = acct.getDisplayName();
  497.             if (name != null) {
  498.                 String[] arrayName = name.split(" ");
  499.                 googleFirstName = arrayName[0];
  500.                 googleSecondName = arrayName[1];
  501.             }
  502.             googleSocialName = "Google";
  503.  
  504.             prefManager.saveLoginDetails("12345", googleFirstName, googleSecondName, googleSocialName, googleId);
  505.             socialNetworksRegistration(googleFirstName, googleSecondName, googleSocialName, googleId);
  506.         } else {
  507.             Toast.makeText(Login.this, "Интернет соеденение отсутствует", Toast.LENGTH_SHORT).show();
  508.         }
  509.     }
  510.  
  511.     @Override
  512.     public void onConnectionFailed(ConnectionResult connectionResult) {
  513.         if (connectionResult.hasResolution()) {
  514.             try {
  515.                 // !!!
  516.                 connectionResult.startResolutionForResult(this, ConnectionResult.DEVELOPER_ERROR);
  517.             } catch (IntentSender.SendIntentException e) {
  518.                 mGoogleApiClient.connect();
  519.             }
  520.         }
  521.  
  522.         mConnectionResult = connectionResult;
  523.  
  524.     }
  525.  
  526.     @Override
  527.     public void onBackPressed() {
  528.         super.onBackPressed();
  529.         Intent intent = new Intent(Intent.ACTION_MAIN);
  530.         intent.addCategory(Intent.CATEGORY_HOME);
  531.         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//***Change Here***
  532.         startActivity(intent);
  533.         finish();
  534.         System.exit(0);
  535.     }
  536.  
  537. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement