2013-08-18 2 views
1

Following thisКак очистить данные пользователя facebook после выхода в Android App

работает с facebook SDK 3.0, здесь после успешного Войти смогли получить facebook электронной почты пользователя и отображается его в TextView, но после выхода из системы, как очистить данные. здесь скриншот после выхода из системы. screenshot after logout

Здесь размещая код

public class MainActivity extends Activity { 

    private String TAG = "MainActivity"; 
    private TextView lblEmail; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     lblEmail = (TextView) findViewById(R.id.lblEmail); 

     LoginButton authButton = (LoginButton) findViewById(R.id.authButton); 
     authButton.setOnErrorListener(new OnErrorListener() { 

      @Override 
      public void onError(FacebookException error) { 
       Log.i(TAG, "Error " + error.getMessage()); 
      } 
     }); 
     // set permission list, Don't foeget to add email 
     authButton.setReadPermissions(Arrays.asList("basic_info", "email")); 
     // session state call back event 
     authButton.setSessionStatusCallback(new Session.StatusCallback() { 

      @Override 
      public void call(Session session, SessionState state, 
        Exception exception) { 

       if (session.isOpened()) { 
        Log.i(TAG, "Access Token" + session.getAccessToken()); 
        Request.executeMeRequestAsync(session, 
          new Request.GraphUserCallback() { 
           @Override 
           public void onCompleted(GraphUser user, 
             Response response) { 
            if (user != null) { 
             Log.i(TAG, "User ID " + user.getId()); 
             Log.i(TAG, 
               "Email " 
                 + user.asMap().get(
                   "email")); 
             lblEmail.setText(user.asMap() 
               .get("email").toString()); 
            } 
           } 
          }); 
       } 

      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Session.getActiveSession().onActivityResult(this, requestCode, 
       resultCode, data); 
    } 

} 

`

ответ

0

следовал этой ссылке, чтобы устранить эту проблему

`private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
    if (state.isOpened()) { 
     userInfoTextView.setVisibility(View.VISIBLE); 
    } else if (state.isClosed()) { 
     userInfoTextView.setVisibility(View.INVISIBLE); 
    } 
}` 

, here

0

Используйте следующий код. Настройте кнопку и по нажатию этой кнопки закройте и очистите информацию о токенах, которая выполняется в методе logoutFacebook(), и после этого вы должны достигнуть экрана signIn, поэтому вам необходимо использовать метод launchSignIn(), в котором вы можете перейти на экран signIn и очистить задачи с использованием Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

package com.example.integration; 

import com.facebook.Session; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class ThirdActivity extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.welcome); 

     Button logoutBtn = (Button) findViewById(R.id.logout_btn); 
     logoutBtn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       logout(); 
      } 
     }); 
     Toast.makeText(ThirdActivity.this, "In Third Activity", Toast.LENGTH_SHORT).show(); 
    } 

    public void logout(){ 
     logoutFacebook(ThirdActivity.this); 
     launchSignIn(ThirdActivity.this); 
    } 

    private void launchSignIn(Context context) { 
     if (context != null) { 
      // Launch LoginActivity 
      Intent loginActivity = new Intent(context, MainActivity.class); 
      loginActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
        | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
      context.startActivity(loginActivity); 
     } 

    } 

    private void logoutFacebook(Context context) { 
     Session session = Session.getActiveSession(); 
     if (session != null) { 
      if (!session.isClosed()) { 
       session.closeAndClearTokenInformation(); 
       // clear your preferences if saved 
      } 
     } else { 
      session = new Session(context); 
      Session.setActiveSession(session); 
      session.closeAndClearTokenInformation(); 
      // clear your preferences if saved 
     } 

    } 

}