2011-01-04 33 views
5

Yeni Facebook kütüphanesi ile FBSession nesnesi kayboldu. Kullanıcının cihazında, safari veya uiwebview istemeden hemen başladığında, geçerli bir oturumu olup olmadığını nasıl kontrol edebilirim?Check Facebook Bağlantısı Oturum Açma IOS

[facebook isSessionValid] yöntemi acccessToken üzerinde çalışır, ancak uygulama safari'den (veya inline uiwebview) geri döndüğünde accessToken ayarlanır.

Oturumları çerez kullanarak kontrol etmek mümkün müdür?

cevap

12

Başarılı bir girişten sonra, bu gibi erişim belirteci ve son kullanma tarihi kaydetmek istiyorum: Uygulamayı yüklediğinizde

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Ardından, bir belirteç yoktur kaydedilirse gibi denetlemek istediğiniz Bu:

_facebook = [[Facebook alloc] initWithAppId:@"[app_id]"]; 
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 
if (![_facebook isSessionValid]) { 
    [_facebook authorize:_permissions delegate:self]; 
} 
else { 
    [_facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

Bu yardımcı olur umarız!

+0

Evet, bu benim kabul edeceğim yöntem, teşekkür ederim – MatterGoal

+0

İşleri harika. Ancak bir bellek sızıntısı var, ancak _facebook başlatma hattında (saklanmaya gerek yok). –

+0

İyi nokta, Amir. Düzenlendi! Teşekkür – donkim

0

Eminim kullanıcının safari veya Facebook iPhone uygulaması aracılığıyla giriş yapıp yapmadığını otomatik olarak kontrol etmesi gerekir. Kullanıcı oturum açmamışsa, yukarıdaki uygulamalardan birini kullanarak isteyecektir (FB uygulaması yüklenmemişse varsayılan safari, bu yüzden simülatör safari'de FB'yi açar).

+0

Teşekkür ederim Danny Boy, evet Safari'den kontrol ediliyor ... ama giriş yapıp yapmadığımı kontrol etmek için safari/uiwebView'den geçmem gerekiyor. Örnek: İlk kez safari/uiwebview kullanarak giriş yaptım, uygulamayı kapatıyorum, uygulamaya geri dönmekteyim. Kullanıcı ismiyle otomatik olarak tanınacak ve facebook resmi otomatik olarak – MatterGoal

+0

Facebook nesnesinin kendisi kullanıcı olup olmadığını kontrol edecek Bir eylemi gerçekleştirmeye çalıştığınızda [self isSessionValid] kullanarak giriş yaptınız. Kullanıcı giriş yapmamışsa, oturum açmak için uygun eylemi gerçekleştirecektir. –

+0

isSessionValid koduna bakarken, accessToken özelliğini ve son kullanma saatini kontrol ettim. Ancak bu özellik yalnızca bir giriş işleminden sonra (veya bir safari/uiwebview/FBapp komut istemi eylemi) kurulur. Bu yüzden en azından bir FB diyaloğunu göstermeden bu bilgiye erişmenin bir yolunu bulamıyorum. – MatterGoal

İlgili konular