Я использую sample program для изучения facebook-ios-sdk, я обнаружил проблему: если я вошел в систему Facebook на своем устройстве и запустил это приложение-образец, все в порядке, однако, когда я удаляю свою учетную запись на Facebook с моего устройства и снова запустите это приложение-образец, я все равно могу пройти процесс входа в систему, и SCViewController все еще можно увидеть (есть приложение быстрого доступа к приложениям Facebook, но мне нужно только нажать кнопку «OKey», я не нужно заполнять любую информацию по электронной почте/паролю для входа в Facebook).Как очистить токен, используя facebook-ios-sdk v3.2.1?
Я проверил код и обнаружил, что после того, как моя учетная запись удалена с устройства, токен в FBSession.activeSession.accessToken
по-прежнему считается действительным. Есть какие-либо проблемы? и как я могу очистить токен и сделать диалог входа в журнал? Я уже вызвал [FBSession.activeSession closeAndClearTokenInformation]
при выходе из системы, токен должен быть очищен, в соответствии с документом sdk Facebook, но это не так.
Окружающая среда, которую я использую: XCode 4.6.1, iPad 6.1 simulator и facebook-ios-sdk v3.2.1.
обновление: вставить код здесь: в SCAppDelegate.m, я добавил 3 функции, которая не в пример кода, но в SDK онлайн документа:
- (void)showLoginView
{
UIViewController* topViewController = [self.navigationController topViewController];
UIViewController* modalViewController = [topViewController modalViewController];
// If the login screen is not already displayed, display it. If the login screen is
// displayed, then getting back here means the login in progress did not successfully
// complete. In that case, notify the login view so it can update its UI appropriately.
if (![modalViewController isKindOfClass:[SCLoginViewController class]]) {
SCLoginViewController* loginViewController = [[SCLoginViewController alloc]
initWithNibName:@"SCLoginViewController"
bundle:nil];
[topViewController presentModalViewController:loginViewController animated:NO];
} else {
SCLoginViewController* loginViewController = (SCLoginViewController*)modalViewController;
[loginViewController loginFailed];
}
}
- (void)sessionStateChanged:(FBSession*)session state:(FBSessionState)state error:(NSError*)error
{
switch (state) {
case FBSessionStateOpen: {
UIViewController* topViewController = [self.navigationController topViewController];
if ([[topViewController modalViewController]isKindOfClass:[SCLoginViewController class]]) {
[topViewController dismissModalViewControllerAnimated:YES];
}
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[self.navigationController popToRootViewControllerAnimated:NO];
[FBSession.activeSession closeAndClearTokenInformation];
[self showLoginView];
break;
default:
break;
}
if (error) {
UIAlertView* alertView = [[UIAlertView alloc]initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}
- (void)openSession
{
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession* session, FBSessionState status, NSError* error){
[self sessionStateChanged:session state:status error:error];}];
}
Тогда в SCLoginViewController.m, я добавьте кнопку, вместо использования существующего объекта FBLoginView, чтобы выполнить задание на вход. Функция обработчика для этой кнопки выглядит следующим образом:
- (IBAction)performLogin:(id)sender {
//[self.spinner startAnimating];
SCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate openSession];
}
Тогда в SCViewController.m, я добавляю еще одну кнопку, чтобы сделать бревно из работы. Функцией обработчика для этой кнопки является следующее:
- (IBAction)logoutButtonWasPressed:(id)sender {
[FBSession.activeSession closeAndClearTokenInformation];
}
другой код почти такой же, как в примере кода.
ли вы пробовали сбросить IPad симулятор? Я использую его в своем приложении, и он работает нормально. Откройте сафари на ipad и выйдите из учетной записи facebook. –
Да, я попытался удалить файлы симулятора в ~/Liberary/Application Support/iPhone Simulator/6.1/Applications, очистить проект и перестроить его с нуля, по-прежнему та же проблема. –
Можете ли вы опубликовать код, чтобы узнать, есть ли у вас какие-либо ошибки? –