2012-10-02 22 views
5

3.x sürümüne yükseltmek istiyoruz, böylece iOS 6/iPhone 5'deki kullanıcılarımız mümkün olan en iyi FB deneyime sahip olacaklar. FB entegrasyonu yeniden yazılıyor mu, yoksa amortismana tabi tutulan başlıkları kullanmam mümkün mü ve 3.1 SDK ile 2.x API'lerini kullanmaya devam etmemi mümkün mü?Facebook'tan geçiş yapma sorunları iOS SDK 2.x - 3.x

anahtar yöntemler ve biz dayanarak konum istekleri bazıları şunlardır: [ad.facebook authorize: Perma], shouldExtendAccessToken, extendAccessTokenIfNeeded, isSessionValid iletişim: @ "besleme" andParams: params andDelegate: temsilci, "https : //graph.facebook.com/me? fields = kimlik, e-posta, first_name & access_token = ", vb. 3.1 örnek projesinde yapılan bazı aramalar, bunların hepsinin değiştirilmiş gibi görünmesini sağlar - ve bunun sadece isim değişiklikleri olmadığını düşünürdüm.

Bu Upgrading from 3.0 to 3.1'un 2.x ila 3.x sürümünü bulamadım - eğer bunu gözden kaçırdıysam, lütfen öneride bulunun.

Daha önce 3.0'a yükseltme yapmayı denediğimde, amortismanlı API'leri kullanmaya çalışırken önemli kırılmalara (çift SBJson üstbilgileri, FB çözülmeyen FB üstbilgileri) rastladım ve derlendikten sonra, BIROUURURL bozuldu ve yeniden anahtarlanacaktı 2 kez FB'ye çarptı, sonra çöktü. Ve 3.x'in ARC'sini devre dışı bırakma ile ilgili sorunların olabileceğini belirten gönderilere rastladım (bunu C++ gibi kullanamıyoruz).

2.x - 3.1'e başlamadım. Belki de bu daha pürüzsüz olur, ama ben uzun bir 2. vuruştan önce benden önce gelenlerden biraz daha fazla bilgi edinmek isterim - çok teşekkürler.

cevap

9

Kısa bir süre önce bu güncellemeyi uygulamam için yaptım. Bunu yapmamın sebebi, iOS 6 için daha akıcı bir akış ve eski sdk’yi eninde sonunda kullanacakları için facebook’un gelecekteki desteği oldu. Büyük değişiklikler giriş akışı ve açık grafik çağrılarıydı. İletişim kutusu, duvarınızda yayınlanmayı, kullanımdan kaldırılan üstbilgilerden hala piggy geri çağırır.

[ad.facebook Yetkilendir'i: Perma]

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]; 

giriş
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/

ek uygulama talimatlarının bakın onlar yerini olacağını aşağıdaki şekilde yöntemleri için ilgileniyorsunuz

shouldExtendAccessToken, extendAccessTokenIfNeeded, - bunlar artık gitti ve facebook SDK imple Gerekirse, önbelleğe almayı ve belirteci genişletmeyi sağlar. Eğer loginUI'nin gösterilmemesi gerekiyorsa, ilk kod snippit'imde görüyorsanız, fakat oturum durumu FBSessionStateCreatedTokenLoaded'deyse, hala oturumu açmak istiyorsunuz. oturumunuz durumunda iken anlama gelir FBSessionStateCreatedTokenLoaded: önbelleğe alınmış belirteç yüklü olduğunu belirten iki ilk oturumu durumlarının

Tek; Bir oturum bu durumdayken UX veya uygulama geçişi

kasada daha fazla bilgi için SessionLoginSample olmadan açık bir oturumda , sonuçlanacaktır *, bir çağrı açı[email protected] "Besleme" andParams: -

isSessionValid bu şimdi

FBSession.activeSession.isOpen 

iletişim kutusudur parametreler andDelegate: temsilci - bu hala aynı, ancak daha önce böyle facebook örneğini oluşturmak zorunda bunu kullanarak:

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]; 

fazla bilgi için https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ bkz

"https://graph.facebook.com/me?fields=id,email,first_name & access_token =", - Grafik çağrıları artık çok daha basit. Ayrıca bunları kolayca birlikte de yapabilirsiniz.

//[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

Düşünceli ve ayrıntılı yanıt için teşekkürler - çok yararlı. Bunları doğrulama şansı bulduğumda, bunu doğru yanıt olarak işaretlemeyi tercih ederim. Tekrar teşekkürler. – leontx

+0

Sadece bu işi yapmak zorunda olduğum için merak ediyorum ve ne kadar sürdüğünü merak ettim, bu yüzden iyi bir tahmin verebilirim. Teşekkürler –

+0

@JonathanDixon muhtemelen 2-3 saat değil. Yeni SDK, eski SDK'nın tümünü içerir, bu nedenle bu projeyi parçalara bölebilirsin. Sadece ihtiyacınız olan şeyi değiştirin ve eski sistemi kullanarak geri kalanını bırakın. Sonra yavaşça yükseltin. – odyth

İlgili konular