2013-01-21 13 views
10

मैं कैसे हर बार जब मैं अपने अनुप्रयोग शुरू Facebook-iOS-Sdk के सक्रिय सत्र को बंद करना या तो ऐप्लिकेशन की हत्या के बाद यह मेरे पिछले लॉगिन सत्र विवरण देता है। जब मैं फेसबुक बटन मैं सब कुछ [appDelegate.session closeAndClearTokenInformation]; [FBSession.activeSession close];[FBSession.activeSession closeAndClearTokenInformation] ..लेकिन सक्रिय सत्र अभी भी नहीं किया गया close..how मैं क्लिक पर पिछला सत्र डेटा बंद कर सकता का इस्तेमाल किया है पर क्लिक करें।फेसबुक-ios-SDK में बंद Facebook सत्र

मैं स्पष्ट करने के लिए नीचे दिए गए कोड का उपयोग लेकिन जब भी मैं फेसबुक बटन पर क्लिक करें नई session..it शुरू करने के लिए मुझे पिछले प्रमाणिकताएं देता है।

- (IBAction)buttonClickHandler:(id)sender { 

appDelegate = [[UIApplication sharedApplication]delegate]; 

// this button's job is to flip-flop the session from open to closed 
if (appDelegate.session.isOpen) { 

    [appDelegate.session closeAndClearTokenInformation]; 
    [FBSession.activeSession close]; 
    [FBSession.activeSession closeAndClearTokenInformation]; 
    FBSession.activeSession=nil; 

} else { 
    if (appDelegate.session.state != FBSessionStateCreated) { 
     // Create a new, logged out session. 
     appDelegate.session = [[FBSession alloc] init]; 
    } 

    // if the session isn't open, let's open it now and present the login UX to the user 
    [FBSession.activeSession closeAndClearTokenInformation]; 
    FBSession.activeSession=nil; 
    [FBSession.activeSession openWithBehavior:FBSessionLoginBehaviorForcingWebView 

          completionHandler:^(FBSession *session, 

               FBSessionState state, 

               NSError *error) { 
           // and here we make sure to update our UX according to the new session state 

           NSLog(@" state=%d",state); 

           [FBRequestConnection 
           startForMeWithCompletionHandler:^(FBRequestConnection *connection, 
                    id<FBGraphUser> user, 
                    NSError *error) { 

            userInfo = @""; 

            // Example: typed access (name) 
            // - no special permissions required 
            userInfo = user.username; 

            NSLog(@"string %@", userInfo); 
              [self checkfacebook]; 

           }]; 


          }]; } 


} 

और में viewDidLoad

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 





AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; 
if (!appDelegate.session.isOpen) { 
    // create a fresh session object 
    appDelegate.session = [[FBSession alloc] init]; 


    if (appDelegate.session.state == FBSessionStateCreatedTokenLoaded) { 
     // even though we had a cached token, we need to login to make the session usable 
     [FBSession.activeSession close]; 
     FBSession.activeSession=nil; 
    } 
} 



NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]]; 

for (NSHTTPCookie* cookie in facebookCookies) { 
    [cookies deleteCookie:cookie]; 
}  


} 

उत्तर

28

हाय Christien हो सकता है bellow दो लिंक अपनी मदद के आप developers.facebook

http://developers.facebook.com/docs/reference/ios/3.0/class/FBSession/

http://developers.facebook.com/docs/reference/ios/3.0/class/FBSession/#close

के इस दो लिंक refur कृपया
[FBSession.activeSession closeAndClearTokenInformation]; 
[FBSession.activeSession close]; 
[FBSession setActiveSession:nil]; 

आप भी इस दो प्रश्न से संबंधित आपकी समस्या की जाँच कर सकते हैं: -

Facebook graph api log out not working

Facebook iOS SDK 3.1.1 "closeAndClearTokenInformation" method no working

आशा अपने आप

+0

या धन्यवाद आदमी हो! मैंने सब कुछ करने की कोशिश की है लेकिन यह अजीब चीज बार-बार हो रही है :(... – Christien

+1

यह वास्तव में एफबी एपीआई के साथ अजीब है। मुझे एक ही "समस्या" है। बीटीडब्ल्यू, जब आप फेसबुक ऐप से लॉगआउट करते हैं (वास्तविक एफबी एप्लीकेशन ऑन आपका डिवाइस), तो आप वास्तव में लॉग आउट हो गए हैं। अगर आप केवल अपने ऐप में लॉग आउट कर रहे हैं (एफबी एक नहीं) तो आप एसएसओ के साथ लॉग इन करेंगे जिसका उपयोग आप अपने एफबी ऐप में कर रहे हैं ... – Yanchi

+1

बढ़िया! धन्यवाद! ऊपर पूरी तरह से मेरे लिए मेरे लिए भी बहुत धन्यवाद Mr.NitinGohel – Anthony

4

में मदद करता है निम्नलिखित बुला

[FBSession.activeSession closeAndClearTokenInformation]; 

उपयोग के बाद साफ करना कुकीज़। यह मेरे लिए काम किया!

 NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (NSHTTPCookie* cookie in 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) { 
    [cookies deleteCookie:cookie]; 
} 
+1

मेरे लिए काम नहीं करता। यह पुरानी सत्र अगली बार खुल जाता है – keen

+2

जब मैं लॉगिन बटन पर क्लिक करता हूं तो पुराने सत्र को साफ़ नहीं करता है। यह हमेशा मुझे "आप पहले ही अधिकृत ऐपनाम" स्क्रीन पर ले जाता है। –

+0

@SonnyG क्या आप इस समस्या के समाधान को हल करने में सक्षम थे? – Devarshi

0

नितिन के Gohel जवाब, स्विफ्ट संस्करण:

FBSession.activeSession().closeAndClearTokenInformation() 
    FBSession.activeSession().close() 
    FBSession.setActiveSession(FBSession()) 

आप

FBSession.setActiveSession(nil) 

उपयोग कर सकते हैं लेकिन समारोह एक unwrapped वस्तु के लिए पूछना है, तो "शून्य" एक अच्छा पैरामीटर के लिए नहीं लगता है पास