2013-07-18 15 views
8

enter image description hereBen Facebook'un Android SDK için Single Sign kullandığımda tamamen yararsız bir sayfa alıyorum

Android Facebook SDK'deki uygulama iletişim kutusuna zaten yetkili Nasıl gösteren önlemek için.

"You have already authorized app. Press "Okay" to continue. 

Bu sayfa kullanıcı deneyimini ortadan kaldıracaktır. Bu ekranı nasıl kaldırabilirim?

Şimdiden teşekkürler.

Not: Bu uygulamayı görmeyiz, FB uygulaması aygıtta yüklü ise. Yalnızca FB uygulaması cihazda mevcut değilse kaldırılır.

+0

Uzun süredir bu sorunla karşılaşılmış gibi görünüyor, bu yazıyı şu adresten kontrol edebilirsiniz: http://stackoverflow.com/questions/4495845/how-to-avoid-already-authorized-in-android-facebook -sdk – Shaggy

+0

Bunu hiç anladın mı? – Shaggy

+0

Aynı problemim var, herkes bunun için bir çözüm buluyor ??? –

cevap

1

İnanıyorum ve HTC One & Galaxy s3 Mini üzerine şimdiye kadar test ettik son Facebook SDK 3.6 kullanıyorum. Bu sayfa benim için herhangi bir noktada kendini göstermiyor. Ben burada burada API kılavuzu ...

https://developers.facebook.com/docs/facebook-login

takip kodu lutfen ... belki bu yardımcı olabilir olduğunu. Ben Facebook logout için bu kodu kullanılan Önce

public class LoginHandlerFrag extends Fragment { 

    private UiLifecycleHelper uiHelper; 
    private static final String TAG = "HomeFragment"; 
    // private ProfilePictureView profilePictureView; 

    private Session.StatusCallback callback = new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, 
         Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_login, container, 
       false); 

     LoginButton authButton = (LoginButton) view 
       .findViewById(R.id.authButton); 

     authButton.setReadPermissions(Arrays.asList("email", "user_location", 
       "user_birthday", "user_likes", "user_photos")); 
     authButton.setFragment(this); 

     Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); 

     return view; 
    } 

    private void makeMeRequest(final Session session) { 
     // Make an API call to get user data and define a 
     // new callback to handle the response. 
     Request request = Request.newMeRequest(session, 
       new Request.GraphUserCallback() { 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 

         // If the response is successful 
         if (session == Session.getActiveSession()) { 
          if (user != null) { 
           // profilePictureView.setProfileId(user.getId()); 
          } 
         } 
         if (response.getError() != null) { 
          // Handle errors, will do so later. 
         } 
        } 
       }); 
     request.executeAsync(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     uiHelper = new UiLifecycleHelper(getActivity(), callback); 
     uiHelper.onCreate(savedInstanceState); 
    } 

    private void onSessionStateChange(Session session, SessionState state, 
             Exception exception) { 
     session = Session.getActiveSession(); 
     SharedPreferences storedPrefs = PreferenceManager 
       .getDefaultSharedPreferences(getActivity().getApplicationContext()); 
     SharedPreferences.Editor editor = storedPrefs.edit(); 
     editor.putBoolean("userLoggedTracker", true); 
     editor.commit(); 

     if (state.isOpened()) { 
      Log.i(TAG, "Logged in..."); 
      makeMeRequest(session); 
      editor.putBoolean("userLoggedTracker", false); 
      editor.commit(); 
      getView().setVisibility(View.GONE); 

     } else if (state.isClosed()) { 
      Log.i(TAG, "Logged out..."); 
      editor.putBoolean("userLoggedTracker", true); 
      editor.commit(); 
      getView().setVisibility(View.VISIBLE); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     Session session = Session.getActiveSession(); 
     if (session != null && (session.isOpened() || session.isClosed())) { 
      onSessionStateChange(session, session.getState(), null); 
     } 
     uiHelper.onResume(); 
    } 

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

    @Override 
    public void onPause() { 
     super.onPause(); 
     uiHelper.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     uiHelper.onDestroy(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     uiHelper.onSaveInstanceState(outState); 
    } 
} 
+1

Sadece bir ipucu gibi bu webview ile geri dönüş yöntemidir. sağ üstte. Bu arada bugün benim için hala gerçekleştiği en küçük sürüm 4.0.1. – rekire

1

: Bu kodun LoginManager.getInstance().logOut(); değiştirildi sonra

if (AccessToken.getCurrentAccessToken() == null) { 
      return; // already logged out 
     } 

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

       LoginManager.getInstance().logOut(); 

      } 
     }).executeAsync(); 

sorunu çözüldü.