2012-08-15 6 views
7

मेरे पास दाएंबैटन बटन पर प्रदर्शित मोडल व्यू कंट्रोलर है। मैं नमूना ios-Facebook SDK 3.0 Error 5 When Posting Status Update में इस नियंत्रक में FbLoginView का उपयोग कर रहा हूं।आईओएस FacebooSDK 3.0 FBLoginVIew मोडल व्यू में नियंत्रक

लेकिन मैं एक से अधिक बार मोडल व्यू कंट्रोलर दिखाने में असमर्थ हूं। मैंने ViewDidUnload पर FBLoginView को रिलीज़ करने का प्रयास किया लेकिन यह हमेशा मोडल व्यू कंट्रोलर खोलने के लिए दूसरी छूट पर क्रैश हो जाता है।

उत्तर

1

मुझे एक ही समस्या थी। कुछ इस तरह जोड़ने के लिए प्रयास करें:

if(!yourFBLoginView) 
{ 
    yourFBLoginView = [FBLoginView alloc] init...]; 
} 

और/या भूल नहीं है आपके सक्रिय सत्र बंद करने के लिए जब आप अपने modalViewController को आउट किया।

if ([[FBSession activeSession] isOpen]) 
{ 
    [[FBSession activeSession] close]; 
} 
+0

जब मैं मोडल को खारिज कर देता हूं तो मैं सत्र को बंद करने के लिए बुद्धिमान नहीं सोचता क्योंकि यह उपयोगकर्ता को लॉगआउट कर सकता है। एक और फिक्स होना चाहिए या हमें इसे – carbonr

5

एक ही समस्या हो गई और पहले से ही कुछ दिनों के लिए इसका सामना करें। और अंततः यह मेरा समाधान है:

if (!FBSession.activeSession.isOpen) { 
    theLoginView = [[FBLoginView alloc] init]; 
    theLoginView.frame = CGRectOffset(theLoginView.frame, 
             ([[UIScreen mainScreen] bounds].size.width-theLoginView.frame.size.width)/2, 
             ([[UIScreen mainScreen] bounds].size.height-theLoginView.frame.size.height)/2 -50); 
    theLoginView.delegate = self; 
    [self.view addSubview:theLoginView]; 
    [theLoginView sizeToFit]; 
} 
//Only close the session when application is terminating, this will save the token information: 
- (void)applicationWillTerminate:(UIApplication *)application { 
    [FBSession.activeSession close]; 
} 

//And keep the FBSession within the app until the user want to logout: 
[FBSession.activeSession closeAndClearTokenInformation]; 

अभी मेरे लिए यह पूरी तरह से ठीक काम कर रहा है। उममीद है कि इससे मदद मिलेगी।

+0

बग के तहत फ़ाइल करने की आवश्यकता है, यह मेरे लिए बिल्कुल भी काम करता है! असल में यह तब भी काम करता है जब आप 1 व्यू में लॉग आउट करते हैं और दूसरे में लॉग इन करते हैं, और इसके विपरीत! हालांकि मुझे कहीं भी टोकन जानकारी को बंद करने और साफ़ करने की आवश्यकता नहीं थी। – Paulo

3

एफबी एसडीके आपको एक से अधिक FBLoginView बनाने की तरह प्रतीत नहीं होता है। हो सकता है कि आप सत्र को सही तरीके से समाप्त कर सकें, लेकिन मुझे एक बार लॉगिनव्यू बनाने और इसे चारों ओर रखना आसान लगता है।

मैं इस किया था इस प्रकार है:

1) मेरी .m मोडल दृश्य नियंत्रक फ़ाइल में, मैं बनाया एक स्थिर चर

static FBLoginView* loginView; 

2) जब मेरे viewDidLoad में मोडल दृश्य नियंत्रक लोड हो रहा है, के बजाय

:

FBLoginView *loginview = [[FBLoginView alloc] initWithPermissions: 
          [NSArray arrayWithObject:@"status_update"]]; 
loginview.frame = CGRectOffset(loginview.frame, 10, 10); 

मैं अगर इसके पहले से ही इस तरह, प्रारंभ एक चेक जोड़ा खोजने के लिए

if (!loginView) { 
    loginView = [[FBLoginView alloc] initWithPermissions: 
           [NSArray arrayWithObject:@"status_update"]]; 
    loginView.frame = CGRectOffset(loginView.frame, 10, 10); 

} 

इसके अलावा, मैंने अभी एफबी की हैलोफ़ेसबुक परियोजना के उदाहरण का पालन किया है।

सुंदर कोड नहीं है, लेकिन ऐसा लगता है कि यह काम करता है।

0

मुझे लगता है कि मेरे लिए इस सवाल का जवाब (क्या कहा गया था का एक रूप) केवल कि मेरे पास करने के लिए आवश्यक था:

[FBSession.activeSession closeAndClearTokenInformation];

में:

(void)applicationWillTerminate:(UIApplication *)application

कार्य करते हैं। विशेष रूप से मेरे लिए समस्या यह थी कि, जब मैं परीक्षण कर रहा था ... मैं लगातार FBSession को नष्ट किए बिना उपयोगकर्ता को लॉग आउट किए बिना ऐप को समाप्त कर रहा था, ताकि जब मैं ऐप में वापस आया तो परीक्षण करने के लिए वापस चला गया - मेरा फेसबुक उपयोगकर्ता अभी भी लॉग इन था, और इस प्रकार कुछ सशर्त गलत तरीके से मिले थे। मुझे लगता है कि परीक्षण करने वाले किसी भी व्यक्ति के लिए यह बहुत महत्वपूर्ण है (और मैं वास्तव में सोच रहा हूं कि आपको उस पंक्ति में वैसे भी होना चाहिए) जब भी इस समस्या से बचने के लिए आवेदन समाप्त हो जाता है, सत्र को साफ़ करना सुनिश्चित करें ... मैं कल्पना कर सकता हूं एक परिदृश्य जहां मेरा ऐप सिर्फ किसी पर दुर्घटनाग्रस्त हो गया और अब वे इसे फिर से खोल रहे हैं और वे दुर्घटना का अनुभव करते हैं क्योंकि सत्र कभी साफ़ नहीं हुआ था।

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