2015-12-16 88 views
0

我在我的應用程序中執行了Facebook登錄實施。因此,代碼第一次從Facebook上檢索用戶詳細信息時工作,但是當我第二次使用fb登錄時,oncancel部分被執行,如果我清除應用程序數據並再次使用fb登錄,則再次運行它。Android Facebook集成問題(fb sdk 4)

這是我用Facebook註冊應用程序的代碼。

protected void Registerwithfb() 
    { 
     // TODO Auto-generated method stub 
     callbackManager = CallbackManager.Factory.create(); 

    LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile,user_about_me, email, user_birthday, user_friends")); 


     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 


      @Override 
      public void onSuccess(LoginResult result) { 
       // TODO Auto-generated method stub 
       // TODO Auto-generated method stub 

       if (AccessToken.getCurrentAccessToken() != null) { 

        GraphRequest request = GraphRequest.newMeRequest(result.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 

         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          // TODO Auto-generated method stub 
          JSONObject json = response.getJSONObject(); 
          try { 
           if (json != null) { 
            String name = json.getString("name"); 
            String id = json.getString("id"); 


           } 

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


        }); 
        Bundle parameters = new Bundle(); 
        parameters.putString("fields", "name,email,first_name,last_name"); 
        // Toast.makeText(getApplicationContext(), parameters.toString(), Toast.LENGTH_LONG).show(); 
        request.setParameters(parameters); 
        request.executeAsync(); 
       } 


      } 

      @Override 
      public void onCancel() { 
       // TODO Auto-generated method stub 
       System.out.println("cancelled"); 

      } 

      @Override 
      public void onError(FacebookException error) { 
       // TODO Auto-generated method stub 
       System.out.println(error); 

      } 
     }); 


    } 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 


       //super.onActivityResult(requestCode, resultCode, data); 
      // facebook.authorizeCallback(requestCode, resultCode, data); 
      //callbackManager.onActivityResult(requestCode, resultCode,data); 
      super.onActivityResult(requestCode, resultCode, data); 
      callbackManager.onActivityResult(requestCode, resultCode, data); 


      } 

回答

0
protected void Registerwithfb() 
     { 
      // TODO Auto-generated method stub 
      callbackManager = CallbackManager.Factory.create(); 

    //I simply added this line 
LoginManager.getInstance().logOut(); 

     LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile,user_about_me, email, user_birthday, user_friends"));