Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.alex.helppeopletogether.registration;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentSender;
- import android.net.Uri;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.example.alex.helppeopletogether.R;
- import com.example.alex.helppeopletogether.fragmentsFormNavigationDrawer.NewsNavigationDrawer;
- import com.example.alex.helppeopletogether.retrofit.RegistrationResponseFromServer;
- import com.example.alex.helppeopletogether.retrofit.Retrofit;
- import com.facebook.AccessToken;
- import com.facebook.CallbackManager;
- import com.facebook.FacebookAuthorizationException;
- import com.facebook.FacebookCallback;
- import com.facebook.FacebookException;
- import com.facebook.FacebookSdk;
- import com.facebook.Profile;
- import com.facebook.ProfileTracker;
- import com.facebook.login.LoginManager;
- import com.facebook.login.LoginResult;
- import com.google.android.gms.auth.api.Auth;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
- import com.google.android.gms.auth.api.signin.GoogleSignInResult;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.SignInButton;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.gson.Gson;
- import com.vk.sdk.VKAccessToken;
- import com.vk.sdk.VKCallback;
- import com.vk.sdk.VKScope;
- import com.vk.sdk.VKSdk;
- import com.vk.sdk.api.VKApi;
- import com.vk.sdk.api.VKApiConst;
- import com.vk.sdk.api.VKError;
- import com.vk.sdk.api.VKParameters;
- import com.vk.sdk.api.VKRequest;
- import com.vk.sdk.api.VKResponse;
- import com.vk.sdk.api.model.VKApiUserFull;
- import com.vk.sdk.api.model.VKList;
- import com.vk.sdk.util.VKUtil;
- import java.util.Arrays;
- import java.util.LinkedHashMap;
- import java.util.List;
- import retrofit.Callback;
- import retrofit.RetrofitError;
- import retrofit.client.Response;
- public class Login extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener {
- private static final int RC_SIGN_IN = 0;
- private static final String TAG = "Login";
- private static final int PROFILE_PIC_SIZE = 400;
- public static Integer userId;
- LoginManager loginManager;
- Context context;
- String UserPhoto;
- Profile profile;
- private int tokin;
- private EditText email;
- private EditText password;
- private Button buttonNext, facebook, vk, googlePlus;
- private TextView buttonNextStepRegistration;
- private Intent intentNextStep;
- private LinkedHashMap<String, String> loginData, socialUserData;
- private Integer responseFromServiseLogin, responseFromServiseSocialNetwork;
- private CallbackManager callbackManager;
- private FacebookCallback<LoginResult> mCallback;
- private String[] scope = new String[]{VKScope.EMAIL, VKScope.PHOTOS, VKScope.MESSAGES, VKScope.FRIENDS};
- private String vkEmail, vkId, vkFirstName, vkSecondName, facebookFirstName, facebookSecondName, facebookId, token, fullName;
- private GoogleApiClient mGoogleApiClient;
- private boolean mIntentInProgress;
- private boolean mSignInClicked;
- private ConnectionResult mConnectionResult;
- private SignInButton btnSignIn;
- private String facebookSocialName, vkSocialName, googleSocialName, googleFirstName, googleSecondName, googleId;
- private ProfileTracker profileTracker;
- public PrefManager prefManager;
- private String userEmail, userPassword, UserIdOfSocialNetwork;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- prefManager = new PrefManager(getApplication());
- loginGoogle();
- FacebookSdk.sdkInitialize(getApplicationContext());
- callbackManager = CallbackManager.Factory.create();
- String[] fingerprints = VKUtil.getCertificateFingerprint(this, this.getPackageName());
- System.out.println(Arrays.toString(fingerprints));
- loginManager = LoginManager.getInstance();
- context = getApplicationContext();
- if (prefManager.getAuthUserValue().length() == 5) {
- // GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- // .requestEmail()
- // .build();
- // mGoogleApiClient = new GoogleApiClient.Builder(this)
- //
- // .enableAutoManage(this, this)
- // .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
- // .build();
- Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
- startActivityForResult(signInIntent, RC_SIGN_IN);
- }
- // if ((prefManager.getAuthUserValue().length() == 2)||(prefManager.getAuthUserValue().length() == 3)||(prefManager.getAuthUserValue().length() == 4)||(prefManager.getAuthUserValue().length() == 5)) {
- if ((1 < prefManager.getAuthUserValue().length()) & (prefManager.getAuthUserValue().length() < 5)) {
- checkLoginOnStart();
- }
- else {
- setContentView(R.layout.login);
- email = (EditText) findViewById(R.id.login_email);
- facebook = (Button) findViewById(R.id.login_button_facebook);
- vk = (Button) findViewById(R.id.login_button_vk);
- googlePlus = (Button) findViewById(R.id.login_button_google_plus);
- password = (EditText) findViewById(R.id.login_password);
- buttonNext = (Button) findViewById(R.id.login_button_login);
- buttonNextStepRegistration = (TextView) findViewById(R.id.login_view_registration);
- buttonNext.setOnClickListener(this);
- vk.setOnClickListener(this);
- facebook.setOnClickListener(this);
- googlePlus.setOnClickListener(this);
- buttonNextStepRegistration.setOnClickListener(this);
- }
- }
- private void checkLoginOnStart() {
- tokin = prefManager.getAuthUserValue().length();
- if ( tokin == 2) {
- userEmail = prefManager.getEmail();
- userPassword = prefManager.getPass();
- prefManager.isUserLogedOut();
- GetToNewsLine();
- }
- else if ( tokin == 3) {
- facebookFirstName = prefManager.getEmail();
- facebookSecondName = prefManager.getPass();
- facebookId = prefManager.getSsocialName();
- facebookId = prefManager.getid();
- facebookSocialName = "Facebook";
- UserPhoto = prefManager.FotoProfile();
- socialNetworksRegistration(facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
- }
- else if ( tokin == 4) {
- vkFirstName = prefManager.getEmail();
- vkSecondName = prefManager.getPass();
- vkSocialName = prefManager.getSsocialName();
- vkId = prefManager.getid();
- vkSocialName = "Vk";
- socialNetworksRegistration(vkFirstName, vkSecondName, vkSocialName, vkId);
- }
- // else if ( tokin == 5) {
- //
- //
- //
- //
- //
- //
- //
- //// socialNetworksRegistration(googleFirstName, googleSecondName, googleSocialName, googleId);
- //
- //// Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
- //// startActivityForResult(signInIntent, RC_SIGN_IN);
- // }
- }
- private void loginGoogle() {
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestEmail()
- .requestId()
- .requestProfile()
- .build();
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
- .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
- .build();
- }
- @Override
- protected void onStart() {
- super.onStart();
- if (mGoogleApiClient != null)
- mGoogleApiClient.connect();
- }
- @Override
- protected void onPause() {
- super.onPause();
- if ( (1 > prefManager.getAuthUserValue().length()) || (prefManager.getAuthUserValue().length() > 4)){//
- email.setText("");
- password.setText("");
- }
- }
- @Override
- protected void onStop() {
- super.onStop();
- if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
- mGoogleApiClient.disconnect();
- }
- if ( (1 > prefManager.getAuthUserValue().length()) || (prefManager.getAuthUserValue().length() > 4)){
- email.setText("");
- password.setText("");
- }
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.login_button_login:
- checkData();
- break;
- case R.id.login_view_registration:
- intentNextStep = new Intent(Login.this, Registration.class);
- startActivity(intentNextStep);
- break;
- case R.id.login_button_facebook:
- loginFacebook();
- break;
- case R.id.login_button_vk:
- VKSdk.login(this, scope);
- break;
- case R.id.login_button_google_plus:
- Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
- startActivityForResult(signInIntent, RC_SIGN_IN);
- break;
- }
- }
- private void loginFacebook() {
- loginManager.logInWithReadPermissions(this, Arrays.asList(new String[]{"public_profile", "user_friends"}));
- loginManager.registerCallback(callbackManager,
- new FacebookCallback<LoginResult>() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- if (Profile.getCurrentProfile() == null) {
- profileTracker = new ProfileTracker() {
- @Override
- protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
- facebookFirstName = currentProfile.getFirstName();
- facebookSecondName = currentProfile.getLastName();
- facebookId = currentProfile.getId();
- profileTracker.stopTracking();
- facebookSocialName = "Facebook";
- prefManager.saveLoginDetails("123", facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
- socialNetworksRegistration(facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
- }
- };
- } else {
- profile = Profile.getCurrentProfile();
- facebookFirstName = profile.getFirstName();
- facebookSecondName = profile.getLastName();
- facebookId = profile.getId();
- facebookSocialName = "Facebook";
- prefManager.saveLoginDetails("123", facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
- socialNetworksRegistration(facebookFirstName, facebookSecondName, facebookSocialName, facebookId);
- }
- UserPhoto = profile.getProfilePictureUri(200,200).toString();
- prefManager.saveFoto(UserPhoto);
- }
- @Override
- public void onCancel() {
- Toast.makeText(Login.this, "у вас, не получилось авторизироваться через Facebook, попробуйте еще раз"
- , Toast.LENGTH_LONG).show();
- }
- @Override
- public void onError(FacebookException exception) {
- if (exception instanceof FacebookAuthorizationException) {
- if (AccessToken.getCurrentAccessToken() != null) {
- LoginManager.getInstance().logOut();
- }
- }
- }
- });
- }
- public void socialNetworksRegistration(String firstName, String secondName, String nameSocial, String idSocial) {
- socialUserData = new LinkedHashMap<>();
- socialUserData.put("first_name", firstName);
- socialUserData.put("second_name", secondName);
- socialUserData.put("social_network", nameSocial);
- socialUserData.put("social_id", String.valueOf(idSocial));
- Retrofit.sendSocialNetworks(socialUserData, new Callback<RegistrationResponseFromServer>() {
- @Override
- public void success(RegistrationResponseFromServer registrationResponseFromServer, Response response) {
- if (registrationResponseFromServer == null) {
- Toast.makeText(Login.this, R.string.error_data_from_server, Toast.LENGTH_LONG).show();
- } else {
- responseFromServiseSocialNetwork = registrationResponseFromServer.response;
- userId = registrationResponseFromServer.user_id;
- fullName = registrationResponseFromServer.full_name;
- if (responseFromServiseSocialNetwork == 1) {
- newsFragment();
- } else if (responseFromServiseSocialNetwork == 2) {
- intentNextStep = new Intent(Login.this, Agreement.class);
- startActivity(intentNextStep);
- }
- }
- }
- @Override
- public void failure(RetrofitError error) {
- Toast.makeText(Login.this, "Данные пользователя соц сети не отправились", Toast.LENGTH_LONG).show();
- }
- });
- }
- private void newsFragment() {
- Intent intent = new Intent(Login.this, NewsNavigationDrawer.class);
- intent.putExtra("fullName", fullName);
- intent.putExtra("foto", UserPhoto);
- //intent.putExtra("userId",userId);
- startActivity(intent);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == RC_SIGN_IN) {
- GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
- handleSignInResult(result);
- }
- if (!VKSdk.onActivityResult(requestCode, resultCode, data, new VKCallback<VKAccessToken>() {
- @Override
- public void onResult(final VKAccessToken res) {
- vkEmail = res.email;
- vkId = res.userId;
- VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.FIELDS, VKApiConst.PHOTO, "first_name,last_name", "photo_id"));
- request.executeSyncWithListener(new VKRequest.VKRequestListener()
- {
- @Override
- public void onError(VKError error) {
- super.onError(error);
- Toast.makeText(Login.this, "Все плохо", Toast.LENGTH_LONG).show();
- }
- @Override
- public void onComplete(VKResponse response) {
- super.onComplete(response);
- VKList<VKApiUserFull> list = (VKList<VKApiUserFull>) response.parsedModel;
- VKApiUserFull user = list.get(0);
- String json = response.responseString;
- vkjson(json);
- vkSocialName = "Vk";
- prefManager.saveLoginDetails("1234", vkFirstName, vkSecondName, vkSocialName, vkId);
- socialNetworksRegistration(vkFirstName, vkSecondName, vkSocialName, vkId);
- }
- });
- }
- @Override
- public void onError(VKError error) {
- Toast.makeText(getApplicationContext(), "у вас, не получилось авторизироваться через VK, попробуйте еще раз", Toast.LENGTH_LONG).show();
- }
- }))
- {
- callbackManager.onActivityResult(requestCode, resultCode, data);
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
- private void vkjson(String json) {
- Gson gson = new Gson();
- VkArrayDates vkArrayDates = gson.fromJson(json, VkArrayDates.class);
- List<VkPersonDates> data = vkArrayDates.getResponse();
- VkPersonDates name = data.get(0);
- vkFirstName = name.getFirst_name();
- vkSecondName = name.getLast_name();
- }
- public void checkData() {
- Registration loginEmail = new Registration();
- if (loginEmail.resultRegularExprensionsEmail(email) == false || password.getText().length() < 6) {
- Toast.makeText(Login.this, "Не правильно введен логин или пароль", Toast.LENGTH_LONG).show();
- // } else if (email.getText().toString().isEmpty() || password.getText().toString().isEmpty()) {
- // Toast.makeText(Login.this, "Enter value in all field", Toast.LENGTH_SHORT).show();
- } else {
- // saveDataFromAccount.setPreferences(Login.this, "status", "1");
- // String status = saveDataFromAccount.getPreferences(Login.this, "status");
- userEmail = String.valueOf(email.getText());
- userPassword = String.valueOf(password.getText());
- prefManager.saveLoginDetails("12", email.getText().toString(), password.getText().toString(), "", "");
- GetToNewsLine();
- }
- }
- public void GetToNewsLine(){
- loginData = new LinkedHashMap<>();
- loginData.put("email", userEmail);
- loginData.put("password", userPassword);
- Retrofit.sendLoginData(loginData, new Callback<RegistrationResponseFromServer>() {
- @Override
- public void success(RegistrationResponseFromServer responseLogin, Response response) {
- if (responseLogin == null) {
- Toast.makeText(Login.this, R.string.error_data_from_server, Toast.LENGTH_LONG).show();
- } else {
- Toast.makeText(getApplication(), "Data sent", Toast.LENGTH_SHORT).show();
- responseFromServiseLogin = responseLogin.response_login;
- userId = responseLogin.user_id;
- fullName = responseLogin.full_name;
- if (responseFromServiseLogin == 1) {
- Toast.makeText(Login.this, "Не правильно введен email или пароль", Toast.LENGTH_LONG).show();
- } else if (responseFromServiseLogin == 2) {
- newsFragment();
- //Toast.makeText(Login.this,"Это успех!!!",Toast.LENGTH_LONG).show();
- }
- }
- }
- @Override
- public void failure(RetrofitError error) {
- System.out.println(error.getMessage());
- Toast.makeText(getApplication(), "Data don't sent. Check internet connection", Toast.LENGTH_LONG).show();
- }
- });
- }
- //
- // public void checkDataAutologin() {
- //
- //// saveDataFromAccount.setPreferences(Login.this, "status", "1");
- //// String status = saveDataFromAccount.getPreferences(Login.this, "status");
- //
- // loginData = new LinkedHashMap<>();
- // loginData.put("email", userEmail);
- // loginData.put("password", userPassword);
- // newsFragment();
- // //Toast.makeText(Login.this,"Это успех!!!",Toast.LENGTH_LONG).show();
- //
- // }
- private void handleSignInResult(GoogleSignInResult result) {
- // result.getSignInAccount().getEmail();
- // result.getSignInAccount().getId();
- Log.d(TAG, "handleSignInResult:" + result.isSuccess());
- if (result.isSuccess()) {
- GoogleSignInAccount acct = result.getSignInAccount();
- String email = acct.getEmail();
- googleId = acct.getId();
- Uri UserPhoto = acct.getPhotoUrl();
- if (UserPhoto != null){ prefManager.saveFoto(UserPhoto.toString());}
- String name = acct.getDisplayName();
- if (name != null) {
- String[] arrayName = name.split(" ");
- googleFirstName = arrayName[0];
- googleSecondName = arrayName[1];
- }
- googleSocialName = "Google";
- prefManager.saveLoginDetails("12345", googleFirstName, googleSecondName, googleSocialName, googleId);
- socialNetworksRegistration(googleFirstName, googleSecondName, googleSocialName, googleId);
- } else {
- Toast.makeText(Login.this, "Интернет соеденение отсутствует", Toast.LENGTH_SHORT).show();
- }
- }
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- if (connectionResult.hasResolution()) {
- try {
- // !!!
- connectionResult.startResolutionForResult(this, ConnectionResult.DEVELOPER_ERROR);
- } catch (IntentSender.SendIntentException e) {
- mGoogleApiClient.connect();
- }
- }
- mConnectionResult = connectionResult;
- }
- @Override
- public void onBackPressed() {
- super.onBackPressed();
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_HOME);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//***Change Here***
- startActivity(intent);
- finish();
- System.exit(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement