Advertisement
Fhernd

InicioSesionFragment.java

Sep 4th, 2017
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.91 KB | None | 0 0
  1. package co.ortizol.fragments;
  2.  
  3.  
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.support.annotation.NonNull;
  7. import android.support.annotation.Nullable;
  8. import android.support.v4.app.Fragment;
  9. import android.util.Log;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  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.GraphRequest;
  19. import com.facebook.GraphResponse;
  20. import com.facebook.Profile;
  21. import com.facebook.ProfileTracker;
  22. import com.facebook.login.LoginResult;
  23. import com.facebook.login.widget.LoginButton;
  24. import com.google.android.gms.auth.api.Auth;
  25. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  26. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  27. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  28. import com.google.android.gms.common.ConnectionResult;
  29. import com.google.android.gms.common.api.GoogleApiClient;
  30. import com.google.android.gms.common.api.ResultCallback;
  31. import com.google.android.gms.common.api.Status;
  32.  
  33. import org.json.JSONException;
  34. import org.json.JSONObject;
  35.  
  36. import co.ortizol.R;
  37.  
  38. /**
  39.  * Representa la lógica de la interfaz para el inicio de sesión.
  40.  */
  41. public class InicioSesionFragment extends Fragment implements FacebookCallback<LoginResult>,
  42.  View.OnClickListener, GoogleApiClient.OnConnectionFailedListener {
  43.  
  44.     public static final String TAG = InicioSesionFragment.class.getSimpleName();
  45.  
  46.     private CallbackManager callbackManager;
  47.  
  48.     private ProfileTracker profileTracker;
  49.  
  50.     public static final int SIGN_IN_GOOGLE_REQUEST_CODE = 1;
  51.  
  52.     private GoogleApiClient mGoogleApiClient;
  53.  
  54.     private int tipoLogin = 1;
  55.  
  56.     public int getTipoLogin() {
  57.         return tipoLogin;
  58.     }
  59.  
  60.     public InicioSesionFragment() {
  61.         // Required empty public constructor
  62.     }
  63.  
  64.  
  65.     @Override
  66.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  67.                              Bundle savedInstanceState) {
  68.         // Inflate the layout for this fragment
  69.         return inflater.inflate(R.layout.fragment_inicio_sesion, container, false);
  70.     }
  71.  
  72.     @Override
  73.     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  74.         super.onViewCreated(view, savedInstanceState);
  75.  
  76.         callbackManager = CallbackManager.Factory.create();
  77.  
  78.         LoginButton loginButton = (LoginButton) view.findViewById(R.id.lbnFacebook);
  79.         loginButton.setReadPermissions("public_profile", "email");
  80.         loginButton.registerCallback(callbackManager, this);
  81.  
  82.         profileTracker = new ProfileTracker() {
  83.             @Override
  84.             protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
  85.                 if (currentProfile != null) {
  86.                     GraphRequest request = GraphRequest.newMeRequest(
  87.                             AccessToken.getCurrentAccessToken(),
  88.                             new GraphRequest.GraphJSONObjectCallback() {
  89.                                 @Override
  90.                                 public void onCompleted(JSONObject object, GraphResponse response) {
  91.                                     try {
  92.                                         String email = object.getString("email");
  93.                                         InicioFragment frgInicio = InicioFragment.getInstance(email);
  94.  
  95.                                        
  96.                                         getActivity().getSupportFragmentManager().beginTransaction()
  97.                                                 .replace(R.id.layContenedor, frgInicio)
  98.                                                 .addToBackStack(null)
  99.                                                 .commit();
  100.                                     } catch (JSONException e) {
  101.                                         e.printStackTrace();
  102.                                         Log.e(TAG, "onCompleted: Error", e);
  103.                                     }
  104.                                 }
  105.                             });
  106.  
  107.                     Bundle parameters = new Bundle();
  108.                     parameters.putString("fields", "id,name,link,email");
  109.  
  110.                     request.setParameters(parameters);
  111.                     request.executeAsync();
  112.                 }
  113.             }
  114.         };
  115.         profileTracker.startTracking();
  116.  
  117.         view.findViewById(R.id.sibIniciarSesion).setOnClickListener(this);
  118.  
  119.         if(mGoogleApiClient == null) {
  120.  
  121.             GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  122.                     .requestEmail()
  123.                     .build();
  124.  
  125.             mGoogleApiClient = new GoogleApiClient.Builder(getContext())
  126.                     .enableAutoManage(getActivity(), this)
  127.                     .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  128.                     .build();
  129.         }
  130.     }
  131.  
  132.     @Override
  133.     public void onActivityResult(int requestCode, int resultCode, Intent data) {
  134.         super.onActivityResult(requestCode, resultCode, data);
  135.         callbackManager.onActivityResult(requestCode, resultCode, data);
  136.     }
  137.  
  138.     @Override
  139.     public void onSuccess(LoginResult loginResult) {
  140.         Log.i(TAG, "onSuccess: " + loginResult.getAccessToken());
  141.     }
  142.  
  143.     @Override
  144.     public void onCancel() {
  145.         Log.i(TAG, "onCancel: Se ha cancelado la operación de inicio de sesión");
  146.     }
  147.  
  148.     @Override
  149.     public void onError(FacebookException error) {
  150.         Log.i(TAG, "onError: " + error.getMessage());
  151.     }
  152.  
  153.     @Override
  154.     public void onClick(View v) {
  155.         signIn();
  156.     }
  157.  
  158.     @Override
  159.     public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  160.  
  161.     }
  162.  
  163.     private void signIn() {
  164.         Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  165.         startActivityForResult(signInIntent, SIGN_IN_GOOGLE_REQUEST_CODE);
  166.     }
  167.  
  168.     public void handleSignInResult(GoogleSignInResult result) {
  169.         Log.d(TAG, "handleSignInResult: " + result.isSuccess());
  170.         if (result.isSuccess()) {
  171.             GoogleSignInAccount account = result.getSignInAccount();
  172.             InicioFragment frgInicio = InicioFragment.getInstance(account.getEmail());
  173.  
  174.             getActivity().getSupportFragmentManager().beginTransaction()
  175.                     .replace(R.id.layContenedor, frgInicio)
  176.                     .addToBackStack(null)
  177.                     .commit();
  178.         }
  179.     }
  180.  
  181.     private void signOut() {
  182.         Auth.GoogleSignInApi.signOut(mGoogleApiClient)
  183.                 .setResultCallback(new ResultCallback<Status>() {
  184.                     @Override
  185.                     public void onResult(@NonNull Status status) {
  186.                         Log.i(TAG, "onResult: Disconnect with Google");
  187.                     }
  188.                 });
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement