2017-08-13 130 views
0

我添加了一个登录按钮到我的应用程序,它工作得很好,但我的问题是当我在下一个活动中添加一个登出按钮,它注销但当我尝试再次登录我的应用程序崩溃!登录然后出来从Facebook导致尝试登录时崩溃android

我用这个代码注销:LoginManager.getInstance().logOut();

,这里是如何活动的我的Java代码,我登录:

public class ConnexionActivity extends AppCompatActivity { 

Button b_bb, b_back, ee, b_inscrp_formulaire, fb; 
EditText tb_pseudo, tb_mdp; 
int id; 
String name, gender, email, birthday; 
private LoginButton loginButton; 
private CallbackManager callbackManager; 
Profile profile; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 



    FacebookSdk.sdkInitialize(getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 
    /*List<String> permissionNeeds = Arrays.asList("user_photos", "email", 
      "user_birthday", "public_profile", "AccessToken");*/ 

    setContentView(R.layout.activity_connexion); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    toolbar.setTitle(""); 
    setSupportActionBar(toolbar); 

    b_inscrp_formulaire = (Button) findViewById(R.id.b_inscrip_formulaire); 


    fb = (Button) findViewById(R.id.fb); 


    loginButton = (LoginButton) findViewById(R.id.login_button); 

    loginButton.setText(""); 

    loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends", "user_birthday")); 
    //"user_photos", "email","user_birthday", "public_profile" 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      graphRequest(loginResult.getAccessToken()); 


     } 

     @Override 
     public void onCancel() { 
      Toast.makeText(getApplicationContext(), "Non-Connecté : connexion interrupu!!", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onError(FacebookException error) { 
      Toast.makeText(getApplicationContext(), "Non-Connecté : Erreur de connexion!!", Toast.LENGTH_LONG).show(); 
     } 


    }); 




    b_bb = (Button) findViewById(R.id.b_bb); 
    b_back = (Button) findViewById(R.id.b_back); 
    tb_pseudo = (EditText) findViewById(R.id.textbox_pseudo); 
    tb_mdp = (EditText) findViewById(R.id.textbox_mdp); 


    ///////////// 
    ee = (Button) findViewById(R.id.button); 
    //////////// 

    b_bb.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: { 
        b_bb.setBackgroundResource(R.drawable.button_bb_selec); 
        break; 
       } 

       case MotionEvent.ACTION_UP: { 

        b_bb.setBackgroundResource(R.drawable.button_bb); 

        break; 
       } 

      } 
      return false; 
     } 
    }); 
    b_bb.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      if (isAuthorized()) { 

       Intent menu_p = new Intent(ConnexionActivity.this, MenuPActivity.class); 
       menu_p.putExtra("pseudo", tb_pseudo.getText().toString()); 
       startActivity(menu_p); 
      } else { 
       openDialog(); 
      } 

     } 
    }); 


    b_back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ConnexionActivity.this.finish(); 
     } 
    }); 


    ee.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent menu_p = new Intent(ConnexionActivity.this, MenuPActivity.class); 
      menu_p.putExtra("pseudo", "Easter"); 
      startActivity(menu_p); 

     } 
    }); 

    b_inscrp_formulaire.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent menu_p = new Intent(ConnexionActivity.this, InscriptionActivity.class); 
      startActivity(menu_p); 

     } 
    }); 


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

      graphRequest(loginResult.getAccessToken()); 

      Intent menu_p = new Intent(ConnexionActivity.this, MenuPActivity.class); 
      menu_p.putExtra("pseudo", profile.getFirstName()); 
      startActivity(menu_p); 

      Toast.makeText(getApplicationContext(), "Connecté : " + profile.getFirstName() + " " + profile.getLastName(), Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onCancel() { 
      Toast.makeText(getApplicationContext(), "Non-Connecté : connexion interrupu!!", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onError(FacebookException error) { 
      Toast.makeText(getApplicationContext(), "Non-Connecté : Erreur de connexion!!", Toast.LENGTH_SHORT).show(); 
     } 


    }); 


    fb.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      LoginManager.getInstance().logInWithReadPermissions(ConnexionActivity.this, 
        Arrays.asList("public_profile","user_friends", "email")); 
      /*facebook permissions : "user_photos", "email", "user_birthday", "public_profile"*/ 
      profile = Profile.getCurrentProfile().getCurrentProfile(); 

      //to verify if a login happened or not!! 
      if (profile != null) { 
       // user has logged in 
      } else { 
       // user has not logged in 
      } 


     } 
    }); 


    //To log out of FB: 
    /*LoginManager.getInstance().logOut();*/ 

    //TODO: check if the user is logged in or not 
    /* profile = Profile.getCurrentProfile().getCurrentProfile(); 
    if (profile != null) { 
     // user has logged in 
    } else { 
     // user has not logged in 
    }*/ 

} 

private Boolean isAuthorized() { 

    if (tb_pseudo.getText().toString().equals("Admin") 
      && tb_mdp.getText().toString().equals("0000") 
      ) { 
     return true; 
    } else 
     return false; 
} 

public void openDialog() { 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
    alertDialogBuilder.setMessage("Mauvaise combinaison \"Pseudo\", \"Mot de passe\""); 

    alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 

     } 
    }); 


    AlertDialog alertDialog = alertDialogBuilder.create(); 
    alertDialog.show(); 
} 


public void graphRequest(AccessToken token) { 
    GraphRequest request = GraphRequest.newMeRequest(token, new GraphRequest.GraphJSONObjectCallback() { 

     @Override 
     public void onCompleted(JSONObject object, GraphResponse response) { 

      //showing infos about the connected client!! 
      //Toast.makeText(getApplicationContext(), object.toString(), Toast.LENGTH_LONG).show(); 

     } 
    }); 

    Bundle b = new Bundle(); 
    b.putString("fields", "id,email,first_name,last_name,picture.type(large)"); 
    request.setParameters(b); 
    request.executeAsync(); 

} 

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


} 

} 
+0

请添加日志.. –

+0

没有日志:/ –

回答

0

Finaly我得到了一个答案:

FacebookSdk.sdkInitialize(getApplicationContext()); 
callbackManager = CallbackManager.Factory.create(); 

fb = (Button) findViewById(R.id.fb); 

loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends", "user_birthday")); 
     //"user_photos", "email","user_birthday", "public_profile" 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       graphRequest(loginResult.getAccessToken()); 


      } 

      @Override 
      public void onCancel() { 
       Toast.makeText(getApplicationContext(), "Non-Connecté : connexion interrupu!!", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onError(FacebookException error) { 
       Toast.makeText(getApplicationContext(), "Non-Connecté : Erreur de connexion!!", Toast.LENGTH_LONG).show(); 
      } 
     }); 

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

       graphRequest(loginResult.getAccessToken()); 

       Intent menu_p = new Intent(ConnexionActivity.this, MenuPActivity.class); 
       menu_p.putExtra("pseudo", profile.getFirstName()); 
       startActivity(menu_p); 

       Toast.makeText(getApplicationContext(), "Connecté : " + profile.getFirstName() + " " + profile.getLastName(), Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onCancel() { 
       Toast.makeText(getApplicationContext(), "Non-Connecté : connexion interrupu!!", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onError(FacebookException error) { 
       Toast.makeText(getApplicationContext(), "Non-Connecté : Erreur de connexion!!", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

fb.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       LoginManager.getInstance().logInWithReadPermissions(ConnexionActivity.this, 
         Arrays.asList("public_profile", "user_friends", "email")); 
       /*facebook permissions : "user_photos", "email", "user_birthday", "public_profile"*/ 
       profile = Profile.getCurrentProfile().getCurrentProfile(); 

       //to verify if a login happened or not!! 
       if (profile != null) { 
        // user has logged in 
       } else { 
        // user has not logged in 
       } 

      } 
     });