Facebook登录名重定向到Android中的登录名

时间:2019-04-22 07:54:23

标签: android facebook

我正在创建一个应用,我希望用户能够使用Facebook登录,以便可以个性化UI。我已按照说明进行操作,并确保已运行代码,但Facebook不允许登录,因此我认为我错过了一段代码,并且对这是什么想法。

我观看了一些有关如何设置代码并阅读有关实现的Facebook文档的youtube视频。我重写并重新组织了代码,以确保以正确的顺序进行编译。    LoginManager.getInstance()。logInWithReadPermissions(this,Arrays.asList(“ email”,“ public_profile”)); 我将其删除后放入 onCreate ,代码不再循环,但仍未输入新的Activity

public class MainActivity extends AppCompatActivity {
private static final int REQUEST_PERMISSION_CODE = 1;
CallbackManager callbackManager;
LoginButton loginFacebook;
Button loginbutton, signupbutton;

String first_name;
String last_name;
String email;
String image_url;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    loginbutton = findViewById(R.id.login);
    loginFacebook = findViewById(R.id.facebook_login_button);
    signupbutton = findViewById(R.id.signup);


    tokenTracker.isTracking();
    checkPermissions();


   /* FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });*/

}
AccessTokenTracker tokenTracker = new AccessTokenTracker() {
    @Override
    protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
        if(currentAccessToken == null){
            Toast.makeText(MainActivity.this, "You Are Not Logged In", Toast.LENGTH_SHORT).show();
        }
    }
};

@Override
protected void onDestroy() {
    super.onDestroy();
    tokenTracker.stopTracking();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
private void checkPermissions(){
    if(Build.VERSION.SDK_INT >= 23 &&ContextCompat.checkSelfPermission(MainActivity.this,
            Manifest.permission.INTERNET) == PackageManager.PERMISSION_GRANTED){
        AccessToken accessToken = AccessToken.getCurrentAccessToken();
        boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
        callbackManager = CallbackManager.Factory.create();
        if(isLoggedIn) {
            Intent skipLoggin = new Intent(this, FrontPageClass.class);
            startActivity(skipLoggin);
            Toast.makeText(this, "This is Alright Alright Alright", Toast.LENGTH_SHORT).show();
        }
    }else{
        requestPermissions();
    }

}
private void requestPermissions(){
    if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.INTERNET)){
        new AlertDialog.Builder(this)
                .setTitle("Permission Needed")
                .setMessage("This Permission is needed for access to several Internet based items such as Facebook")
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.INTERNET}, REQUEST_PERMISSION_CODE);
                    }
                })
                .setNegativeButton("Dismiss", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                })
                .create().show();

    }else{
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, REQUEST_PERMISSION_CODE);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if(requestCode == REQUEST_PERMISSION_CODE){
        if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
            Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();

        }
    }
}

public void login_clikd(View view) {
    Intent l = new Intent(this, LoginClass.class);
    startActivity(l);
}

public void signup_clikd(View view) {
    Intent s = new Intent(this, SignupClass.class);
    startActivity(s);
}

public void fblogin(View view) {
    Intent toLogin = new Intent(this, FrontPageClass.class);
    LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email","public_profile"));
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken newAccessToken = loginResult.getAccessToken();
            GraphRequest request = GraphRequest.newMeRequest(newAccessToken, (object, response) -> {
                try {
                    first_name = object.getString("first_name");
                    last_name = object.getString("last_name");
                    email = object.getString("email");
                    String id = object.getString("id");
                    image_url = "https://graph.facebook.com/" + id + "/pictures?type=normal";

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            });

            Bundle parameters = new Bundle();
            parameters.putString("fields", "first_name, last_name ,email ,id");
            request.setParameters(parameters);
            request.executeAsync();
            toLogin.putExtra("First Name", first_name);
            toLogin.putExtra("Last Name", last_name);
            toLogin.putExtra("Email", email);
            toLogin.putExtra("Profile Picture", image_url);
            startActivity(toLogin);
        }


        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException error) {
        }
    });


}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    callbackManager.onActivityResult(resultCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
}

当我单击 fblogin 按钮时,我希望打开Facebook登录名。然后,我输入我的凭据,并在出现提示时单击“继续”,它将打开登录脚本,而不是打开新的活动。我想我的代码在某处循环,不会释放。       我放错了哪些代码,并且运行了某些代码,这些代码不应该在Class中?

0 个答案:

没有答案