2013-03-15 1 views
2

У меня проблема с выходом из LinkedIn. Я хочу, чтобы пользователь увидел, как LinkedIn поет в форме с именем пользователя и паролем после выполнения метода выписки.Вывод GTMOAuthViewControllerTouch и LinkedIn

метод Поющий:

NSURL *authorizeTokenURL = [NSURL URLWithString:@"https://www.linkedin.com/uas/oauth/authenticate"]; 
NSURL *accessTokenURL = [NSURL URLWithString:@"https://api.linkedin.com/uas/oauth/accessToken"]; 

GTMOAuthViewControllerTouch *authViewControllerTouch = [[GTMOAuthViewControllerTouch alloc] initWithScope:nil language:nil requestTokenURL:requestTokenURL authorizeTokenURL:authorizeTokenURL accessTokenURL:accessTokenURL authentication:authentication appServiceName:@"AppServiceName" delegate:self finishedSelector:@selector(linkedInAuthSelector:finishedWithAuth:error:)]; 

[authViewControllerTouch setBrowserCookiesURL:[NSURL URLWithString:@"https://api.linkedin.com/"]]; 

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:authViewControllerTouch]; 
[self presentViewController:navigationController animated:YES completion:nil]; 

Singout метод:

- (void) logout{ 
    [GTMOAuthViewControllerTouch removeParamsFromKeychainForName:@"AppServiceName"]; 
} 

Но, в следующий раз, когда я Поющий, OAuth промахов шаг там мне нужно ввести учетные данные LinkedIn.

Приложение запрашивает логин и пароль только в том случае, если он удален и установлен снова.

ответ

1

несмотря на существование метода [GTMOAuth clearBrowserCookies]. я вручную удалить все куки с "LinkedIn" в домене в singout методе

NSHTTPCookieStorage *cookieStorage; 
cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
NSArray *cookies = [cookieStorage cookies]; 

for (NSHTTPCookie *cookie in cookies) { 
    if ([cookie.domain rangeOfString:@"linkedin"].location != NSNotFound) { 
     [cookieStorage deleteCookie:cookie]; 
    } 
} 
1

В Swift 3, используйте следующий код:

  // LinkedIn Cookie Purge 
    let cookieStorage: HTTPCookieStorage = HTTPCookieStorage.shared 
    if let cookies = cookieStorage.cookies { 
     for cookie in cookies { 
      if cookie.domain.contains("linkedin") { 
       cookieStorage.deleteCookie(cookie) 
      } 
     } 
    } 
Смежные вопросы