2012-10-02 21 views
5

पर माइग्रेट करने में समस्याएं हम 3.x पर अपग्रेड करना चाहते हैं, इसलिए हमारे उपयोगकर्ताओं को आईओएस 6/आईफोन 5 पर सबसे सुव्यवस्थित एफबी अनुभव संभव होगा ... दिया गया है, क्या मुझे सामना करना पड़ रहा है एक एफबी एकीकरण फिर से लिखना, या क्या मेरे लिए अवमूल्य हेडर का उपयोग करना संभव है और 3.1 एसडीके के साथ 2.x एपीआई का उपयोग जारी रखना संभव है?फेसबुक आईओएस एसडीके 2.x से 3.x

कुंजी तरीकों और अनुरोधों हम पर भरोसा कर रहे हैं से कुछ हैं: [ad.facebook अधिकृत: perms], shouldExtendAccessToken, extendAccessTokenIfNeeded, isSessionValid, संवाद: @ "फ़ीड" andParams: पैरामीटर andDelegate: प्रतिनिधि, "https : //graph.facebook.com/me? फ़ील्ड = आईडी, ईमेल, first_name & access_token = ", et.al. 3.1 नमूना परियोजनाओं में कुछ खोजों को ऐसा लगता है कि इन सभी को बदल दिया गया है - और मुझे लगता है कि यह सिर्फ नाम परिवर्तन नहीं है।

मुझे इस Upgrading from 3.0 to 3.1 के 2.x से 3.x संस्करण नहीं मिला है - अगर मैंने इसे अनदेखा किया है, तो कृपया सलाह दें।

जब पहले से 3.0 में अपग्रेड करने के हाल ही में की कोशिश कर रहा है, मैं काफी टूट-फूट में भाग (SBJson हेडर, गैर हल करने अमेरिकन प्लान हेडर नकल) जब घिस API का उपयोग करने की कोशिश कर, और एक बार यह संकलित, handleOpenURL टूट लग रहा था और उसे पुन: स्विच होगा दूसरी बार एफबी पर, फिर दुर्घटनाग्रस्त हो गया। और मैं पोस्टिंग में आया हूं जो इंगित करता है कि 3.x के एआरसी को अक्षम करने में समस्याएं हो सकती हैं (हम इसका उपयोग नहीं कर सकते क्योंकि हमारे पास सी ++ है)।

मैंने 2.x से 3.1 पर शुरू नहीं किया है। शायद यह आसान हो जाएगा, लेकिन मुझे उन लोगों से कुछ अंतर्दृष्टि प्राप्त करना अच्छा लगेगा जो दूसरे लंबे बल्लेबाजी से पहले मेरे सामने चले गए थे - बहुत बहुत धन्यवाद।

उत्तर

9

मैंने हाल ही में अपने ऐप के लिए यह अपग्रेड किया है। ऐसा करने का मेरा कारण आईओएस 6 के लिए आसान प्रवाह था और फेसबुक के लिए भावी समर्थन था क्योंकि वे अंततः पुराने एसडीके को हटा देंगे। बड़े बदलाव लॉगिन प्रवाह और खुली ग्राफ कॉल थे। आपकी दीवार पर पोस्ट करने के लिए संवाद कॉल अभी भी बहिष्कृत शीर्षकों से पीछे हट गया है।

[ad.facebook अधिकृत: perms]

FBSession *session = [[FBSession alloc] initWithAppID:appId 
           permissions:permissionsArray 
          urlSchemeSuffix:urlSuffix 
         tokenCacheStrategy:nil]; 

[FBSession setActiveSession:session]; 
if(allowLoginUI == YES) 
{ 
    [session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:handler]; 
} 
else if(session.state == FBSessionStateCreatedTokenLoaded) 
{ 
    [session openWithCompletionHandler:^(FBSession *_session, FBSessionState status, NSError *error) { 
     [self _sessionStateChanged:_session state:status error:error];    
    }]; 
} 
[session release]; 

लॉगिन
https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/

पर अतिरिक्त कार्यान्वयन निर्देश के लिए देखने के तरीकों के लिए आप इस प्रकार में वे प्रतिस्थापित किया जाएगा रुचि रखते हैं

चाहिएExtendAccessToken, expandAccessTokenIfNeeded, - ये अब चले गए हैं और फेसबुक एसडीके लागू यदि आवश्यक हो तो कैशिंग को कैशिंग और टोकन बढ़ाएं। यदि आप मेरे पहले कोड स्निपिट में देखते हैं यदि loginUI दिखाना नहीं है, लेकिन सत्र स्थिति FBSessionStateCreatedTokenLoaded में थी, तो भी आप सत्र खोलना चाहते हैं। जब आपका सत्र राज्य में है FBSessionStateCreatedTokenLoaded इसका मतलब है:

यह दर्शाता है कि एक कैश्ड टोकन भरा गया दो आरंभिक सत्र को राज्यों में से एक; जब एक सत्र इस राज्य में, एक कॉल खोलने के लिए * UX या एप्लिकेशन-स्विचिंग

चेकआउट अधिक जानकारी के लिए SessionLoginSample बिना एक खुला सत्र में , परिणाम देगा।@ "फ़ीड" andParams:: -

isSessionValid यह अब

FBSession.activeSession.isOpen 

संवाद है पैरामीटर andDelegate: प्रतिनिधि - यह अभी भी एक ही है, लेकिन इससे पहले कि आप इस तरह फेसबुक उदाहरण बनाने के लिए इसे का उपयोग:

Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil]; 
facebook.accessToken = FBSession.activeSession.accessToken; 
facebook.expirationDate = FBSession.activeSession.expirationDate; 
//... normal code to setup a feed post 
[facebook dialog:@"feed" andParams:params andDelegate:self]; 
[facebook release]; 

अधिक जानकारी के लिए https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ देख

"https://graph.facebook.com/me?fields=id,email ,first_name & access_token =", - ग्राफ कॉल अब बहुत आसान हैं। आप उन्हें एक साथ आसानी से बैच भी कर सकते हैं।

//[facebook requestWithGraphPath:@"me" andDelegate:self]; would become 
[FBRequestConnection startForMeWithCompletionHandler:^ 
    (FBRequestConnection *connection, id result, NSError *error) {}]; 

//[facebook requestWithGraphPath:@"me/albums" andParams:params andHttpMethod:@"POST" andDelegate:self]; would become 
    [FBRequestConnection startWithGraphPath:@"me/albums" 
          parameters:params 
          HTTPMethod:@"POST" 
         completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {}]; 

अधिक जानकारी

+0

विचारशील और विस्तृत प्रतिक्रिया के लिए धन्यवाद - बहुत उपयोगी है। जब मुझे इन्हें प्रमाणित करने का मौका मिलता है, तो मैं इसे सही प्रतिक्रिया के रूप में चिह्नित करना सुनिश्चित कर दूंगा। एक बार फिर धन्यवाद। – leontx

+0

बस उत्सुक है क्योंकि मुझे यह सही काम करना है और मैं सोच रहा था कि यह कितना समय लगा, इसलिए मैं एक सभ्य अनुमान दे सकता हूं। धन्यवाद –

+0

@ जोनाथन डिक्सन शायद इतना लंबा नहीं 2-3 घंटे। नए एसडीके में अभी भी पुराने एसडीके शामिल हैं ताकि आप इस प्रोजेक्ट पर भाग ले सकें। बस अपनी जरूरतों को प्रतिस्थापित करें और बाकी को पुराने सिस्टम का उपयोग करके छोड़ दें। फिर धीरे-धीरे अपग्रेड करें। – odyth

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