Advertisement
Roctik

Untitled

Sep 10th, 2019
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.13 KB | None | 0 0
  1. package com.goseivllc.goseiv.ui;
  2.  
  3. import androidx.appcompat.app.AppCompatActivity;
  4.  
  5. import android.Manifest;
  6. import android.app.AlertDialog;
  7. import android.content.Intent;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. import android.util.Log;
  11. import android.widget.Button;
  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.GraphRequest;
  19. import com.facebook.login.LoginManager;
  20. import com.facebook.login.LoginResult;
  21. import com.facebook.login.widget.LoginButton;
  22. import com.goseivllc.goseiv.R;
  23. import com.karumi.dexter.Dexter;
  24. import com.karumi.dexter.MultiplePermissionsReport;
  25. import com.karumi.dexter.PermissionToken;
  26. import com.karumi.dexter.listener.PermissionRequest;
  27. import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
  28.  
  29. import org.json.JSONException;
  30.  
  31. import java.util.Arrays;
  32. import java.util.List;
  33. import java.util.Objects;
  34.  
  35. public class LoginMainActivity extends AppCompatActivity {
  36.  
  37.     private LoginButton fbLoginButton;
  38.     private CallbackManager callbackManager;
  39.    /* private static final String AUTH_TYPE = "rerequest";*/
  40.  
  41.     @Override
  42.     protected void onCreate(Bundle savedInstanceState) {
  43.         super.onCreate(savedInstanceState);
  44.         setContentView(R.layout.activity_login_main);
  45.         fbLoginButton = findViewById(R.id.login_button);
  46.         Button btnFbSignIn = findViewById(R.id.btn_facebook);
  47.         Button btnSignIn = findViewById(R.id.btn_sign_in);
  48.         Button btnSignUp = findViewById(R.id.btn_sign_up);
  49.  
  50.         requestPermission();
  51.  
  52.         btnFbSignIn.setOnClickListener(view -> {
  53.             LoginManager.getInstance().logOut();
  54.             fbLoginButton.performClick();
  55.         });
  56.  
  57.         btnSignUp.setOnClickListener(view -> {
  58.             Intent signUp = new Intent(this,RegistrationActivity.class);
  59.             startActivity(signUp);
  60.             overridePendingTransition(R.anim.enter_from_right,R.anim.exit_to_left);
  61.             finish();
  62.         });
  63.  
  64.         btnSignIn.setOnClickListener(view -> {
  65.             Intent signIn = new Intent(this,LoginActivity.class);
  66.             startActivity(signIn);
  67.             overridePendingTransition(R.anim.enter_from_right,R.anim.exit_to_left);
  68.             finish();
  69.         });
  70.  
  71.  
  72.         fbLoginButton.setPermissions(Arrays.asList("email", "public_profile"));
  73.         callbackManager = CallbackManager.Factory.create();
  74.         /*fbLoginButton.setAuthType(AUTH_TYPE);*/
  75.  
  76.         fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
  77.             @Override
  78.             public void onSuccess(LoginResult loginResult) {
  79.                 AccessToken accessToken = loginResult.getAccessToken();
  80.                 useLoginInformation(accessToken);
  81.                 setResult(RESULT_OK);
  82.             }
  83.  
  84.             @Override
  85.             public void onCancel() {
  86.                 setResult(RESULT_CANCELED);
  87.             }
  88.  
  89.             @Override
  90.             public void onError(FacebookException exception) {
  91.                 Log.d("FB ERROR: ", Objects.requireNonNull(exception.getMessage()));
  92.             }
  93.         });
  94.     }
  95.  
  96.     private void useLoginInformation(AccessToken accessToken) {
  97.         //OnCompleted is invoked once the GraphRequest is successful
  98.         GraphRequest request = GraphRequest.newMeRequest(accessToken, (object, response) -> {
  99.             try {
  100.                 String name = object.getString("name");
  101.                 String email = object.getString("email");
  102.                 System.out.println(name);
  103.                 System.out.println(email);
  104.  
  105.             } catch (JSONException e) {
  106.                 e.printStackTrace();
  107.             }
  108.         });
  109.         // We set parameters to the GraphRequest using a Bundle.
  110.         Bundle parameters = new Bundle();
  111.         parameters.putString("fields", "id,name,email,picture.width(200)");
  112.         request.setParameters(parameters);
  113.         // Initiate the GraphRequest
  114.         request.executeAsync();
  115.     }
  116.     @Override
  117.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  118.         super.onActivityResult(requestCode, resultCode, data);
  119.         callbackManager.onActivityResult(requestCode, resultCode, data);
  120.     }
  121.  
  122.     private void requestPermission() {
  123.         Dexter.withActivity(this).withPermissions(Manifest.permission.ACCESS_FINE_LOCATION)
  124.                 .withListener(new MultiplePermissionsListener() {
  125.                     @Override
  126.                     public void onPermissionsChecked(MultiplePermissionsReport report) {
  127.                         if (report.areAllPermissionsGranted()) {
  128.                             System.out.println("ok");
  129.                         }
  130.                         if (report.isAnyPermissionPermanentlyDenied()) {
  131.                             showSettingsDialog();
  132.                         }
  133.                     }
  134.  
  135.                     @Override
  136.                     public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
  137.                         token.continuePermissionRequest();
  138.                     }
  139.                 }).withErrorListener(error -> Toast.makeText(this, "Error occurred! ", Toast.LENGTH_SHORT).show())
  140.                 .onSameThread()
  141.                 .check();
  142.     }
  143.  
  144.     private void showSettingsDialog() {
  145.         AlertDialog.Builder builder = new AlertDialog.Builder(this);
  146.         builder.setTitle("Need permission");
  147.         builder.setMessage("This app need permission for correct work");
  148.         builder.setPositiveButton("Go to setting", (dialog, which) -> {
  149.             dialog.cancel();
  150.             openSettings();
  151.         });
  152.         builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel());
  153.         builder.show();
  154.  
  155.     }
  156.  
  157.     private void openSettings() {
  158.         Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  159.         Uri uri = Uri.fromParts("package", this.getPackageName(), null);
  160.         intent.setData(uri);
  161.         startActivityForResult(intent, 101);
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement