2015-03-31 8 views
26

अपने आवेदन में कुछ मामलों मैं उपयोगकर्ता लॉग आउट करना होगा में, लेकिन मैं केवल मेरे विचार नियंत्रक में FBSDKLoginButton उदाहरण है और लागू करनेफेसबुक एसडीके 4.0 आईओएस स्विफ्ट प्रवेश करें एक उपयोगकर्ता बाहर प्रोग्राम के रूप में

FBSDKLoginButtonDelegate 

का उपयोग कर
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 

मैं उपयोगकर्ता लॉग आउट (नष्ट Facebook सत्र) कैसे उपयोग करने के लिए पता नहीं है के बाद लॉगिन दृश्य पॉप करना चाहते हैं

FBSDKLoginManager.logOut(<#FBSDKLoginManager#>) 

I'am एक UIViewController के अंदर काम कर रहा है और एक आउटलेट

उत्तर

64

ठीक है के माध्यम से FBSDKLoginButton संदर्भित, यहाँ किसी के लिए भी बात सहायता की जरूरत है। मैं उपयोग करते हुए मेरे उपयोगकर्ताओं लॉग आउट करने के FBSDKLoginManager उदाहरण

जाहिर है और मैं अगर यह दर्ज है पता नहीं है या प्रबंधित नहीं FBSDKLoginManager देखता

FBSDKAccessToken.currentAccessToken() 

तो

let loginManager = FBSDKLoginManager() 
loginManager.logOut() // this is an instance function 

लॉग्स उपयोगकर्ता बाहर, क्या मैंने गलत समझा कि logOut क्लास फ़ंक्शन नहीं है।

उम्मीद है कि किसी की मदद करता है!

+0

मैं एक tabbar नियंत्रक से बोल रहा हूँ और मेरे rootview नियंत्रक अर्थात नियंत्रक में अपना प्रवेश की ओर लौटने। जब मैं इस लॉगिन व्यू कंट्रोलर पर वापस आ जाता हूं, तो मुझे लॉग "यूज़र लॉग आउट" लॉग दिखाई दे रहा है, इसलिए लॉगआउट काम करता है लेकिन मैं फंक्शन लॉगिन में शामिल हो रहा हूं। कॉम्प्लेट विथ रिसेट। कोई विचार क्यों? – user2363025

+0

सुनिश्चित करें कि आप लॉगिन कार्यक्षमता को लॉग इन नहीं कर रहे हैं, DidAppear को आपके अंदर लॉगिनव्यू कंट्रोलर के अंदर, यह किया गया कॉम्पलीट WithResult ब्लॉक केवल तभी कॉल किया जाना चाहिए जब लॉगिन कार्रवाई ट्रिगर हो! यदि यह कोड को पेस्ट करने में मदद नहीं करता है –

+0

मेरे पास उस नियंत्रक के लिए व्यूडिडेप्पर में कोई कोड नहीं है। क्या हम चैट करने जा सकते हैं? – user2363025

11

एक ही है, लेकिन ऑब्जेक्टिव-सी में:

[[[FBSDKLoginManager alloc] init] logOut];

आयात को न भूलें: FBSDKCoreKit/FBSDKCoreKit.h & FBSDKLoginKit/FBSDKLoginKit.h

+0

यह थोड़ा बदसूरत है, है ना? – Ricardo

+0

आप लॉगऑन को कॉल करने के बाद बाद में LoginManager को पकड़ने के लिए एक अस्थायी चर जोड़ सकते हैं। लेकिन अगर मैं सिर्फ लॉगआउट करना चाहता हूं तो यह सबसे छोटा तरीका है। मेरी राय में LoginManager को सिंगलटन क्लास के रूप में कार्यान्वित किया जाना चाहिए (क्योंकि अंत में इस तरह से काम कर रहा है) और फिर [[FBSDKLoginManager साझा उदाहरण] logOut] पर कॉल करें। –

1

इसके अलावा, अगर आप का इस्तेमाल किया है पार्स और फेसबुक आईओएस एसडीके संस्करण> = 4.4.0फेसबुक के माध्यम से किसी उपयोगकर्ता को साइन अप करने या लॉग इन करने के लिए, कृपया इसके बजाय उपयोग करें:

PFUser.logOut() 

यह उपयोगकर्ता को लॉग आउट करेंगे, पार्स बैक-एंड तरफ सत्र हटाना (आपके पार्स एप्लिकेशन सेटिंग के माध्यम से enable पार्स revocable session को भूल नहीं है), के साथ साथ यह भी फेसबुक को नष्ट करेगा उपयोगकर्ता डिवाइस की डिस्क पर लिखा सत्र।

मुझे आशा है कि यह उत्तर आपको लोगों की मदद करेगा।

27

Swifty और सरल जवाब मेरे जैसे आलसी लोगों के लिए:

FBSDKLoginManager().logOut() 
+2

समस्या यह है कि यदि आप इसे कॉल करते हैं, तो एक बार जब उपयोगकर्ता फेसबुक के साथ फिर से लॉग इन करने का प्रयास करता है तो यह केवल "आप पहले ही अधिकृत {ऐप नेम}" कहेंगे। उपयोगकर्ता फेसबुक से लॉग आउट कैसे कर सकता है फिर खाते स्विच कर सकता है? – MarksCode

+0

@ मार्क्सकोड। https://stackoverflow.com/questions/36368510/how-to-logout-user-using-facebook-authentication-using-swift-and-ios – Jeff

6

स्विफ्ट 3 के लिए, फेसबुक एसडीके 4.16।0: का उपयोग करना Facebook Swift SDK

LoginManager().logOut() 
संबंधित मुद्दे