Вызов функции выхода из facebook ios sdk не очищает учетные данные пользователя

При реализации единого входа в facebook вызов функции выхода из facebook ios sdk не очищает учетные данные пользователя и не запрашивает вход в следующий раз.


person Sabir Ali    schedule 20.05.2011    source источник
comment
вы имеете в виду OAuth и открытие внешнего мобильного сафари?   -  person Nick Weaver    schedule 20.05.2011
comment
да, который указан на сайте developer.facebook.com   -  person Sabir Ali    schedule 20.05.2011


Ответы (2)


Я использовал Graph API.....

- (IBAction)loginButtonPressed:(id)sender {

    NSString *client_id = @"dsfgdgfgfgdfgvdfg";

    //alloc and initalize our FbGraph instance
    self.fbGraph = [[FbGraph alloc] initWithFbClientID:client_id];

    //begin the authentication process.....
    [fbGraph authenticateUserWithCallbackObject:self andSelector:@selector(fbGraphCallback:) 
                         andExtendedPermissions:@"user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins"];
}


- (void)logOutButtonPressed {

    NSLog(@"logout");

    fbGraph.accessToken = nil;
    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [storage cookies])
    {
        NSString* domainName = [cookie domain];
        NSRange domainRange = [domainName rangeOfString:@"facebook"];
        if(domainRange.length > 0)
        {
            [storage deleteCookie:cookie];
        }
    }

    [self loginButtonPressed:nil];
}

И этот код РАБОТАЕТ ОТЛИЧНО. ПОПРОБУЙТЕ ЭТО

person iProgrammer    schedule 20.05.2011
comment
@Pallavi действительно ли это удаляет файл cookie в мобильном сафари? Я видел этот код раньше и немного отлаживал, но безрезультатно. - person Nick Weaver; 20.05.2011
comment
Я не использую мобильное сафари, вход в систему — это веб-просмотр, и я даю кнопку для выхода. - person iProgrammer; 20.05.2011
comment
@Pallavi Я думаю, что это работает, однако, если вы используете одну из библиотек Facebook, она запустит мобильное сафари, что является более надежным способом позволить пользователю войти в систему: приложение не имеет доступа к учетным данным, в веб-представлении вы можете получить доступ к тех. - person Nick Weaver; 20.05.2011
comment
ссылка Я использовал это - person iProgrammer; 20.05.2011
comment
Это работает, когда я выхожу из системы, а затем снова нажимаю кнопку для входа в систему, но это не работает, когда я выхожу из приложения после выхода из системы, снова открываю приложение и нажимаю кнопку входа в систему. Какое-то время это сводило меня с ума. - person Ishu; 25.05.2011
comment
Если я выйду из системы и выйду из приложения, то при запуске приложения будет отображаться страница входа. - person iProgrammer; 25.05.2011

Я испытал то же самое, однако я думаю, что это не ошибка, хотя и сбивает с толку.

Facebook размещает файл cookie в мобильном сафари, который ссылается на действительный сеанс или, возможно, на токен доступа. Если вы выходите из системы с помощью библиотеки Facebook, он очищает токен доступа и все файлы cookie веб-просмотра, используемые не в мобильном сафари. На самом деле вы не можете сделать это по коду. Теперь, если вы вернетесь и откроется мобильное сафари, сеанс все еще будет действительным, и вы снова войдете в систему без ввода учетных данных.

Вы можете сообщить об ошибке, чтобы спросить, может ли Facebook аннулировать серверную часть токена доступа.

person Nick Weaver    schedule 20.05.2011