2013-07-18 8 views
8

enter image description hereकैसे दिखा से बचने के लिए एंड्रॉयड फेसबुक एसडीके

जब मैं का उपयोग फेसबुक के Android SDK के लिए पर एकल साइन मैं एक पूरी तरह से बेकार पृष्ठ मिल रहा है अनुप्रयोग संवाद करने के लिए पहले से ही अधिकृत।

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

यह पृष्ठ उपयोगकर्ता अनुभव को नष्ट कर देगा। मैं इस स्क्रीन को कैसे हटा सकता हूं?

अग्रिम धन्यवाद।

नोट: हम इस समस्या को नहीं देख पाएंगे यदि डिवाइस में एफबी ऐप इंस्टॉल है। यह केवल तभी उठाया जाएगा जब डिवाइस में एफबी ऐप उपलब्ध न हो।

+0

ऐसा लगता है कि यह समस्या लंबे समय से आसपास हो सकती है, इस पोस्ट को 2010 से जांचें: http://stackoverflow.com/questions/4495845/how-to-avoid-already- प्राधिकृत-in-android-facebook -एसडीके – Shaggy

+0

क्या आपने कभी इसे समझ लिया था? – Shaggy

+0

मुझे एक ही समस्या है क्या किसी को इसके लिए समाधान मिल रहा है ??? –

उत्तर

1

मैं नवीनतम Facebook SDK 3.6 उपयोग कर रहा हूँ मेरा मानना ​​है कि और HTC एक & गैलेक्सी S3 मिनी पर अब तक का परीक्षण किया है। यह पृष्ठ किसी भी समय मेरे लिए खुद को प्रदर्शित नहीं करता है। मैं API मार्गदर्शिका यहाँ ...

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

पीछा यहाँ कोड में अच्छी तरह से ... शायद यह मदद मिल सकती है है।

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

बस एक संकेत के रूप में यह वेबव्यू के साथ फ़ॉलबैक विधि है। कृपया छोटे x को नोट करें ऊपरी दाएं भाग पर वैसे आज कम से कम संस्करण 4.0.1 है जहां यह अभी भी मेरे लिए होता है। – rekire

1

इससे पहले कि मैं फेसबुक लॉगआउट के लिए इस कोड का प्रयोग किया:

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(); 

इस कोड LoginManager.getInstance().logOut(); करने के लिए बदल करने के बाद समस्या हल हो जाती।

संबंधित मुद्दे