2012-09-04 8 views
12

आईओएस के लिए फेसबुक एसडीके के बारे में एक त्वरित सवाल। मैं एक उपयोगकर्ता के लिए विस्तारित अनुमतियों तक पहुंचने के लिए कार्यक्षमता को कार्यान्वित करने की कोशिश कर रहा हूं।मैं पिछले फेसबुक पुनर्लेखन कॉल को कैसे रद्द कर सकता हूं?

जब कोड विस्तारित अनुमति अनुरोध स्वीकार करता है (फेसबुक आईओएस ऐप से उपयोगकर्ता को रीडायरेक्ट किया जाता है) से कोड ठीक काम करता है, तो मुझे यह पता लगाने में परेशानी हो रही है कि जब उपयोगकर्ता अनुमतियों को स्वीकार नहीं करता है तो उपयोगकर्ता ऐप पर वापस आ गया है , या फिर ऐप पर लौटने पर रद्द करना क्लिक करें।

यदि मैं ऐप में 'रद्द करें' और मल्टीटास्क पर क्लिक करता हूं, तो कुछ भी लॉग नहीं है और स्क्रीन पर कुछ भी नहीं दिखाया गया है। जब मैं फिर से पुनः प्राधिकृत करने का प्रयास करें, फेसबुक एसडीके एक अपवाद फेंकता है:

FBSession: यह एक पिछले पुनः प्राधिकृत कॉल अभी तक पूरा नहीं किया है, जबकि पुनः प्राधिकृत करना मान्य नहीं है।

जबकि मैं अपवाद पकड़ सकता हूं, फिर भी यह मदद नहीं करता है क्योंकि मैं पिछली कॉल को कैसे रोक सकता हूं ताकि उपयोगकर्ता फिर से प्राधिकृत करने का प्रयास कर सके। - कोड ठीक काम करता है

@try { 
    [[FBSession activeSession] reauthorizeWithPermissions:[self requiredPermissions] 
              behavior:FBSessionLoginBehaviorWithFallbackToWebView 
            completionHandler:^(FBSession *session, NSError *error) { 
     if (!error) { 
      [self fetchUserPermissionsWithCompletionHandler:^(BOOL extendedGranted) { 
       if (extendedGranted) { 
        [self setCanPostToActivityStream:YES]; 
       } 
      }]; 
     } 
     else { 
      NSLog(@"%@", [error localizedDescription]); 
     } 
    }]; 
} 
@catch (NSException *exception) { 
    NSLog(@"%@", exception); 
} 

अब, इस मुद्दे को ऊपर कोड के साथ नहीं है:

यहाँ कोड मैं इस समय का उपयोग कर रहा है। मैं जिस समस्या का सामना कर रहा हूं, वह पिछले को रद्द कर रहा है जब उपयोगकर्ता अनुमतियों को अनुमति देने के बाद सफलतापूर्वक ऐप पर वापस नहीं आ जाता है। फेसबुक एसडीके जैसा कि किसी भी तरह से इस स्थिति के ऐप को सतर्क नहीं करता है।

+0

क्या आप अपना अंतिम सत्र साफ़ कर चुके हैं? – Spynet

+0

वही समस्या –

+0

पुराना क्यू, लेकिन क्या आप कार्यान्वित कर रहे हैं - (बूल) आवेदन: (यूआईएप्लिकेशंस *) एप्लिकेशन openURL: (NSURL *) यूआरएल स्रोत आवेदन: (एनएसएसटींग *) स्रोत आवेदन एनोटेशन: (आईडी) एनोटेशन? –

उत्तर

8

आपके ऐप के प्रतिनिधि से, जब - (void)applicationDidBecomeActive:(UIApplication*)application लागू किया जाता है, तो आपको सक्रिय सत्र की handleDidBecomeActive विधि पर कॉल करने की आवश्यकता होती है। एक बार ऐसा करने के बाद, आपके reauthorizeWithPublishPermissions कॉल से जुड़े समापन हैंडलर को लागू किया जाएगा, और उचित त्रुटि प्रदान करेगा।

- (void)applicationDidBecomeActive:(UIApplication*)application 
{ 
    [[FBSession activeSession] handleDidBecomeActive]; 
} 
0

आपको एसडीके से वापस आने को क्या देखना चाहिए, पुनः प्राप्त करने वाले हैंडलर को पुनः प्राधिकृत करने में एक त्रुटि है। Xcode 4.5, iOS 5, m.facebook.com के खिलाफ अधिकृत:

{ 
    "com.facebook.sdk:ErrorLoginFailedReason" = "com.facebook.sdk:ErrorReauthorizeFailedReasonUserCancelled"; 
} 

मैं निम्नलिखित सेटअप के साथ कुछ इसी तरह का परीक्षण किया। प्रारंभिक प्रमाणीकरण के बाद मैंने कोड को पुनः प्राधिकृत करने के लिए कोड डाला, फिर रद्द करें पर क्लिक किया और यह त्रुटि मिली।

[FBSession.activeSession 
    reauthorizeWithPublishPermissions: 
    [NSArray arrayWithObject:@"publish_actions"] 
    defaultAudience:FBSessionDefaultAudienceFriends 
    completionHandler:^(FBSession *session, NSError *error) { 
     if (!error) { 
      // Success case 
     } else { 
      // Check the error, info 
      // [[error userInfo] objectForKey:@"com.facebook.sdk:ErrorLoginFailedReason"] 
     } 
    }]; 

यदि आप इसे नहीं देख रहे हैं तो यह एक बग है और आप इसे फेसबुक के साथ फाइल करना चाह सकते हैं।

+0

हाय सी एबरनैथी! अगर हम reauthorizeWithPermissions का उपयोग करके अधिक अनुमतियों के लिए पूछते हैं, तो क्या हमारा पिछला सत्र समाप्त हो गया है? या यह एक ही टोकन के साथ समान रहता है ??? क्या हमें appDelegate.session और appDelegate.facebook.session को फिर से गधे लगाने की आवश्यकता है? यह "अनुमति" बटन के बजाय अनुमतियों UI में "लॉगिन" बटन दिखाता है। –

+0

पिछले सत्र की समय सीमा समाप्त नहीं हुई है। आप नए अनुमतियों के साथ अद्यतन सत्र का उपयोग करना चाहते हैं, इसलिए यदि आपको अपने प्राधिकरण कोड को सेट अप करने के तरीके पर आधारित होना आवश्यक है तो अनुमतियों को फिर से असाइन करें। –

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