Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.roctik.ufeg.view;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.widget.EditText;
- import android.widget.ImageButton;
- import android.widget.Toast;
- import com.facebook.AccessToken;
- import com.facebook.CallbackManager;
- import com.facebook.FacebookCallback;
- import com.facebook.FacebookException;
- import com.facebook.FacebookSdk;
- import com.facebook.GraphRequest;
- import com.facebook.login.LoginResult;
- import com.facebook.login.widget.LoginButton;
- import com.google.android.gms.auth.api.signin.GoogleSignIn;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import com.google.android.gms.auth.api.signin.GoogleSignInClient;
- import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
- import com.google.android.gms.common.api.ApiException;
- import com.google.android.gms.tasks.Task;
- import com.roctik.ufeg.R;
- import com.roctik.ufeg.model.Login;
- import com.roctik.ufeg.model.PostLogin;
- import com.roctik.ufeg.model.PostSignUp;
- import com.roctik.ufeg.model.SignUp;
- import com.roctik.ufeg.presenter.LoginPresenter;
- import com.roctik.ufeg.presenter.SignUpPresenter;
- import org.json.JSONException;
- import java.util.Objects;
- import info.hoang8f.widget.FButton;
- public class LoginActivity extends AppCompatActivity implements ViewLogin, ViewSignUp {
- public static final String APP_PREFERENCES = "mysettings";
- public static final String APP_PREFERENCES_TOKEN = "token";
- private static final String TAG = LoginActivity.class.getSimpleName();
- SharedPreferences mSettings;
- FButton signIn;
- FButton signUp;
- EditText edtEmail;
- EditText edtPass;
- ImageButton facebook, google;
- SignUpPresenter presenterSignUp;
- LoginPresenter presenter;
- private GoogleSignInClient googleSignInClient;
- private CallbackManager callbackManager;
- LoginButton loginButton;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
- FacebookSdk.sdkInitialize(getApplicationContext());
- callbackManager = CallbackManager.Factory.create();
- setContentView(R.layout.activity_login);
- signIn = findViewById(R.id.btnSignIn);
- signUp = findViewById(R.id.btnSignUp);
- edtEmail = findViewById(R.id.edtEmail);
- edtPass = findViewById(R.id.edtPassword);
- loginButton = findViewById(R.id.login_button);
- //instagram = findViewById(R.id.instagram);
- facebook = findViewById(R.id.facebook);
- google = findViewById(R.id.google);
- presenter = new LoginPresenter();
- presenter.setViewLogin(this);
- presenterSignUp = new SignUpPresenter();
- presenterSignUp.setView(this);
- signUp.setOnClickListener((v) -> {
- Intent signInActivity = new Intent(this, RegistrationActivity.class);
- startActivity(signInActivity);
- });
- signIn.setOnClickListener((v) -> {
- PostLogin postLogin = new PostLogin();
- postLogin.setEmail(Objects.requireNonNull(edtEmail.getText()).toString());
- postLogin.setPassword(Objects.requireNonNull(edtPass.getText()).toString());
- presenter.getLogin(postLogin);
- });
- loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- AccessToken accessToken = loginResult.getAccessToken();
- useLoginInformation(accessToken);
- }
- @Override
- public void onCancel() {
- }
- @Override
- public void onError(FacebookException error) {
- }
- });
- facebook.setOnClickListener((v) -> loginButton.performClick());
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestEmail()
- .build();
- googleSignInClient = GoogleSignIn.getClient(this, gso);
- google.setOnClickListener((v) -> {
- Intent signInIntent = googleSignInClient.getSignInIntent();
- startActivityForResult(signInIntent, 101);
- });
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- callbackManager.onActivityResult(requestCode, resultCode, data);
- if (resultCode == Activity.RESULT_OK)
- if (requestCode == 101) {
- try {
- Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
- GoogleSignInAccount account = task.getResult(ApiException.class);
- PostLogin postLogin = new PostLogin();
- postLogin.setEmail(Objects.requireNonNull(account).getEmail());
- postLogin.setPassword(account.getDisplayName() + account.getEmail());
- presenter.getLogin(postLogin);
- PostSignUp postSignUp = new PostSignUp();
- postSignUp.setName(account.getDisplayName());
- postSignUp.setEmail(account.getEmail());
- postSignUp.setPassword(account.getDisplayName() + account.getEmail());
- presenterSignUp.getSignUp(postSignUp);
- } catch (ApiException e) {
- Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
- }
- }
- }
- private void useLoginInformation(AccessToken accessToken) {
- //OnCompleted is invoked once the GraphRequest is successful
- GraphRequest request = GraphRequest.newMeRequest(accessToken, (object, response) -> {
- try {
- System.out.println(object.names());
- String name = object.getString("name");
- String email = object.getString("id");
- PostSignUp postSignUp = new PostSignUp();
- postSignUp.setName(name);
- postSignUp.setEmail(email + "@facebook.com");
- postSignUp.setPassword(name + email);
- presenterSignUp.getSignUp(postSignUp);
- PostLogin postLogin = new PostLogin();
- postLogin.setEmail(email + "@facebook.com");
- postLogin.setPassword(name + email);
- presenter.getLogin(postLogin);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- });
- // We set parameters to the GraphRequest using a Bundle.
- Bundle parameters = new Bundle();
- parameters.putString("fields", "id,name,email,picture.width(200)");
- request.setParameters(parameters);
- // Initiate the GraphRequest
- request.executeAsync();
- }
- @Override
- public void getLogin(Login login) {
- if (login.getStatus().equals("ok")) {
- Intent main = new Intent(this, MainActivity.class);
- startActivity(main);
- SharedPreferences.Editor editor = mSettings.edit();
- editor.putString(APP_PREFERENCES_TOKEN, login.getToken());
- editor.apply();
- finish();
- } else {
- Toast.makeText(this, "Ошибка, проверьте логин и пароль", Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void getSignUp(SignUp signUp) {
- System.out.println(signUp.getStatus());
- if (signUp.getStatus().equals("ok")) {
- SharedPreferences.Editor editor = mSettings.edit();
- editor.putString(APP_PREFERENCES_TOKEN, signUp.getToken());
- editor.apply();
- Intent main = new Intent(this, MainActivity.class);
- startActivity(main);
- finish();
- } else {
- Toast.makeText(this, "Ошибка, попробуйте снова", Toast.LENGTH_LONG).show();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement