Facebook登出显示一些不寻常的行为,Android

问题描述:

我想开发一个应用程序,我使用Facebook登录。当我使用从另一个activity.it我logoutfromfacebook开始登录活动,并突然自动登录与以前information.i无法登录用一个新的loginId.I不知道它是什么。要么我犯了一个严重的错误,要么是一个愚蠢的错误。 这里是我的代码 -Facebook登出显示一些不寻常的行为,Android

public class LoginActivity extends AbsRuntimePermission { 
private static final int REQUEST_Permission =10; 


    private TextView info; 
    private LoginButton loginButton; 
    private CallbackManager callbackManager; 
    private SparseIntArray mErrorString; 
    private Button facebook_button; 
    ProgressDialog progress; 
    private String facebook_id,f_name,m_name,l_name,gender,full_name,email_id; 
SharedPreferences sharedPreferences; 
SharedPreferences.Editor editor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

     //facebook sdk 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 
    //for permission in manifest file cause it is launch activity 
    requestAppPermissions(new String[]{ 
      Manifest.permission.ACCESS_FINE_LOCATION, 
      Manifest.permission.ACCESS_COARSE_LOCATION, 
      Manifest.permission.CALL_PHONE, 
      Manifest.permission.INTERNET},R.string.msg,REQUEST_Permission); 

    //facebook 
    info = (TextView) findViewById(R.id.info); 
    loginButton = (LoginButton) findViewById(R.id.login_button); 
    progress = new ProgressDialog(LoginActivity.this); 
    progress.setMessage(getResources().getString(R.string.please_wait_facebooklogin)); 
    progress.setIndeterminate(false); 
    progress.setCancelable(true); 

    facebook_id=f_name=m_name=l_name=gender=full_name=email_id=""; 

    LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email", "public_profile")); 
    //loginButton.setReadPermissions("email", "public_profile"); 

    //register callback object for facebook result 

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(final LoginResult loginResult) { 


      progress.show(); 
      Profile profile = Profile.getCurrentProfile(); 
      Log.d("is null", String.valueOf(profile==null)); 
       if(profile != null) { 
       facebook_id = profile.getId(); 
       f_name = profile.getFirstName(); 
       m_name = profile.getMiddleName(); 
       l_name = profile.getLastName(); 
         //show Toast 
       GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(JSONObject object, GraphResponse response) { 
           try { 
            String email_id = object.getString("email"); 
            // String gender = object.getString("gender"); 
            String Profile_name = object.getString("name"); 
            long fb_id = object.getLong("id"); //use this for logout 

            //Shared preference 

            sharedPreferences = getApplicationContext().getSharedPreferences("pref", MODE_PRIVATE); 
            editor = sharedPreferences.edit(); 
            editor.putString("User_Name", Profile_name); 
            editor.putString("User_Email",email_id); 
            editor.putString("f_id", String.valueOf(fb_id)); 
            editor.apply(); 
            //Starting a new activity using this information 
            Intent i = new Intent(LoginActivity.this, MainActivity.class); 
            i.putExtra("type", "facebook"); 
            i.putExtra("Facebook_id", fb_id); 
            i.putExtra("full_name", Profile_name); 
            i.putExtra("email_id", email_id); 
            //i.putExtra("gender", gender); 

            progress.dismiss(); 
            startActivity(i); 
            finish(); 

           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 
          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "email,id,name"); 
       request.setParameters(parameters); 
       request.executeAsync(); 
      } 
     } 


     @Override 
     public void onCancel() { 
     Toast.makeText(LoginActivity.this,getResources().getString(R.string.login_canceled_facebooklogin),Toast.LENGTH_SHORT).show(); 
     progress.dismiss(); 
     } 

     @Override 

     public void onError(FacebookException error) { 
      Toast.makeText(LoginActivity.this,getResources().getString(R.string.login_failed_facebooklogin),Toast.LENGTH_SHORT).show(); 
      progress.dismiss(); 
     } 
    }); 

    //facebook button click 
    loginButton.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile","user_friends","email")); 

     } 
    }); 
} 

public void logoutFromFacebook(){ 
    try{ 
     if(AccessToken.getCurrentAccessToken()==null){ 
      return; 
     } 

     String fb1_id=sharedPreferences.getString("f_id",""); 
     GraphRequest graphRequest = new GraphRequest(AccessToken.getCurrentAccessToken(),"/"+fb1_id+"/permissions/",null, 
       HttpMethod.DELETE,new GraphRequest.Callback(){ 
      @Override 
      public void onCompleted(GraphResponse response) { 
       PreferenceManager.getDefaultSharedPreferences(getBaseContext()). 
         edit().clear().apply(); 
       LoginManager.getInstance().logOut(); 

      } 
     }); 
     graphRequest.executeAsync(); 
    }catch (Exception ex){ 
     ex.printStackTrace(); 
    } 
} 

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

@Override 
public void onPermissionGranted(int requestCode) { 

    //anything after permission Granted 
    Toast.makeText(getApplicationContext(),"Permission granted",Toast.LENGTH_LONG).show(); 

} 



public void goTo(View view) { 
    Intent intent = new Intent(this, MainActivity.class); 
    this.startActivity(intent); 
} 
+1

退出登录的 – Vadivel

+0

推倒后ofcoz我正在登录@Vadivel –

+0

后退出在你的代码是不是叫logoutFromFacebook()方法 – Vadivel

,如果你正在使用注销其他活动,则这样做:

如果(AccessToken.getCurrentAccessToken()== NULL){

Toast.makeText( getApplicationContext(),“请稍候”,Toast.LENGTH_SHORT).show(); }

   new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest.Callback() { 
        @Override 
        public void onCompleted(GraphResponse graphResponse) { 
         LoginManager.getInstance().logOut(); 

         Toast.makeText(getApplicationContext(), "Logout Successfully", Toast.LENGTH_LONG).show(); 
         Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
         startActivity(intent); 
         finish(); 


        } 
       }).executeAsync(); 
      } 
+0

graphRequest.executeAsync();那么这和String fb1_id = sharedPreferences.getString(“f_id”,“”); –

+0

我打电话给这个从另一个活动 - if(id == R.id.logout_button_action){ loginActivity.logoutFromFacebook(); Log.d(“logout”,“yess”); // bro运行应用程序 Intent intent = new Intent(this,LoginActivity.class); this.startActivity(intent); 返回true; } @Ravish Sharma –

+0

http://www.androidwarriors.com/2016/02/facebook-integration-in-android-studio.html –