Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.goseivllc.goseiv.ui;
- import androidx.appcompat.app.AppCompatActivity;
- import android.Manifest;
- import android.app.AlertDialog;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.util.Log;
- import android.widget.Button;
- import android.widget.Toast;
- import com.facebook.AccessToken;
- import com.facebook.CallbackManager;
- import com.facebook.FacebookCallback;
- import com.facebook.FacebookException;
- import com.facebook.GraphRequest;
- import com.facebook.login.LoginManager;
- import com.facebook.login.LoginResult;
- import com.facebook.login.widget.LoginButton;
- import com.goseivllc.goseiv.R;
- import com.karumi.dexter.Dexter;
- import com.karumi.dexter.MultiplePermissionsReport;
- import com.karumi.dexter.PermissionToken;
- import com.karumi.dexter.listener.PermissionRequest;
- import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
- import org.json.JSONException;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Objects;
- public class LoginMainActivity extends AppCompatActivity {
- private LoginButton fbLoginButton;
- private CallbackManager callbackManager;
- /* private static final String AUTH_TYPE = "rerequest";*/
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login_main);
- fbLoginButton = findViewById(R.id.login_button);
- Button btnFbSignIn = findViewById(R.id.btn_facebook);
- Button btnSignIn = findViewById(R.id.btn_sign_in);
- Button btnSignUp = findViewById(R.id.btn_sign_up);
- requestPermission();
- btnFbSignIn.setOnClickListener(view -> {
- LoginManager.getInstance().logOut();
- fbLoginButton.performClick();
- });
- btnSignUp.setOnClickListener(view -> {
- Intent signUp = new Intent(this,RegistrationActivity.class);
- startActivity(signUp);
- overridePendingTransition(R.anim.enter_from_right,R.anim.exit_to_left);
- finish();
- });
- btnSignIn.setOnClickListener(view -> {
- Intent signIn = new Intent(this,LoginActivity.class);
- startActivity(signIn);
- overridePendingTransition(R.anim.enter_from_right,R.anim.exit_to_left);
- finish();
- });
- fbLoginButton.setPermissions(Arrays.asList("email", "public_profile"));
- callbackManager = CallbackManager.Factory.create();
- /*fbLoginButton.setAuthType(AUTH_TYPE);*/
- fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- AccessToken accessToken = loginResult.getAccessToken();
- useLoginInformation(accessToken);
- setResult(RESULT_OK);
- }
- @Override
- public void onCancel() {
- setResult(RESULT_CANCELED);
- }
- @Override
- public void onError(FacebookException exception) {
- Log.d("FB ERROR: ", Objects.requireNonNull(exception.getMessage()));
- }
- });
- }
- private void useLoginInformation(AccessToken accessToken) {
- //OnCompleted is invoked once the GraphRequest is successful
- GraphRequest request = GraphRequest.newMeRequest(accessToken, (object, response) -> {
- try {
- String name = object.getString("name");
- String email = object.getString("email");
- System.out.println(name);
- System.out.println(email);
- } 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
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- callbackManager.onActivityResult(requestCode, resultCode, data);
- }
- private void requestPermission() {
- Dexter.withActivity(this).withPermissions(Manifest.permission.ACCESS_FINE_LOCATION)
- .withListener(new MultiplePermissionsListener() {
- @Override
- public void onPermissionsChecked(MultiplePermissionsReport report) {
- if (report.areAllPermissionsGranted()) {
- System.out.println("ok");
- }
- if (report.isAnyPermissionPermanentlyDenied()) {
- showSettingsDialog();
- }
- }
- @Override
- public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
- token.continuePermissionRequest();
- }
- }).withErrorListener(error -> Toast.makeText(this, "Error occurred! ", Toast.LENGTH_SHORT).show())
- .onSameThread()
- .check();
- }
- private void showSettingsDialog() {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Need permission");
- builder.setMessage("This app need permission for correct work");
- builder.setPositiveButton("Go to setting", (dialog, which) -> {
- dialog.cancel();
- openSettings();
- });
- builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel());
- builder.show();
- }
- private void openSettings() {
- Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- Uri uri = Uri.fromParts("package", this.getPackageName(), null);
- intent.setData(uri);
- startActivityForResult(intent, 101);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement