很遺憾,Facebook SDK不會自動爲我們處理它。除了構建它到SDK自己,最簡單的方法是這樣:
每次分配_facebook時間:
_facebook = [[Facebook alloc] initWithAppId:@"SuperDuperAppID"];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [prefs stringForKey:@"facebook-accessToken"];
NSString *expirationDate = [prefs stringForKey:@"facebook-expirationDate"];
_facebook.accessToken = accessToken;
_facebook.expirationDate = expirationDate;
如果你從來沒有在保存NSUserDefaults的東西,然後零值將被設置。什麼都沒有發生。否則,將設置真值,並且[_facebook isSessionValid];
應該返回TRUE,表示良好的值。繼續進行Facebook SDK調用,就好像他們已經登錄(他們是)。如果爲假,請致電
[facebook authorize:permissions delegate:self];
照常。
然後確保支持以下Facebook的委託方法:
- (void)fbDidLogin {
NSString *accessToken = _facebook.accessToken;
NSString *expirationDate = _facebook.expirationDate;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:accessToken forKey:@"facebook-accessToken"];
[prefs expirationDate forKey:@"facebook-expirationDate"];
[prefs synchronize];
}
我在我的應用程序使用此代碼,它完美的作品。我從內存中完成了這個工作,所以如果在複製和粘貼時不起作用,我表示歉意。某處可能有錯誤輸入,加上不正確的內存管理。不要忘記,除非獲得脫機權限,否則訪問令牌會過期。在任何情況下,上面的代碼處理一切。
你我必須自己保存accessToken和expirationDate。檢查我的答案的代碼。 – 2011-04-21 19:54:50