0
我不知道如何處理這個案例,當iOS FBSDK給我一個過期的令牌。在我的應用程序中,我點擊「登錄」按鈕時調用以下方法。如何處理FBSDK令牌過期的情況?
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"public_profile", @"email", @"user_photos", @"user_birthday"]
fromViewController:nil
handler: etc.... ]
這則觸發FBSDKAccessTokenDidChangeNotification,而我HANDELING這種方法如下:
- (void)fbAccessTokenDidChange:(NSNotification *)notification
{
if ([notification.name isEqualToString:FBSDKAccessTokenDidChangeNotification]) {
FBSDKAccessToken* oldToken = [notification.userInfo valueForKey: FBSDKAccessTokenChangeOldKey];
FBSDKAccessToken* newToken = [notification.userInfo valueForKey: FBSDKAccessTokenChangeNewKey];
NSLog(@"FB access token did change notification\nOLD token:\t%@\nNEW token:\t%@", oldToken.tokenString, newToken.tokenString);
// initial token setup when user is logged in
if (newToken != nil && oldToken == nil)
{
NSDate *nowDate = [NSDate date];
NSDate *fbExpirationDate = [FBSDKAccessToken currentAccessToken].expirationDate;
if ([fbExpirationDate compare:nowDate] != NSOrderedDescending)
{
NSLog(@"FB token: expired");
if ([FBSDKAccessToken currentAccessToken])
{
[[FBSDKLoginManager new] logOut];
[[NSNotificationCenter defaultCenter] postNotificationName:@"fbTokenExpired" object:nil];
}
return;
}
[self storeFacebookToken];
}
else if (newToken && oldToken && ![oldToken.tokenString isEqualToString:newToken.tokenString])
{
NSLog(@"FB access token string did change");
[self storeFacebookToken];
}
}
}
什麼我需要爲caase做令牌已過期? ??我正在調用[[FBSDKLoginManager new] logOut],它將當前令牌設置爲nil。但是,當我再次將用戶重定向到登錄按鈕操作時,會出現同一個窗口,要求用戶按'允許'。這並不是要求用戶輸入他的密碼和電子郵件,這從我的理解會產生一個新的令牌?我錯在哪裏?現在用戶只是進入循環從未登錄...
任何幫助很感謝!日Thnx
Thnx但這不是一個好的解決方案。我應該如何向用戶展示?我需要以某種方式在後臺以編程方式執行此操作,而不是告訴用戶去fb應用程序並註銷... – user1974507