2016-06-06 2 views
6

Я следую Instagram authentication [рекомендуется], используя UIWebView в приложении iOS. После ввода учетных данных при входе в систему пользователя загружается страница со следующей ошибкой.Ошибка входа в Instagram в приложении iOS с использованием UIWebView

Не удалось загрузить эту страницу. Если у вас отключены файлы cookie в вашем браузере или вы просматриваете в приватном режиме, попробуйте включить куки или отключить частный режим, а затем повторите попытку.

И это происходит только при первом запуске по этапам аутентификации; при следующей попытке все работает гладко, как шелк. Я получаю код суффикса для перенаправления url, и я запрашиваю токен доступа, используя его.

Скриншот:

enter image description here

Там уже другой вопрос here и это не помогает.

EDIT: Кажется, что проблема с Cookies. Хотя, я еще не смог это исправить.

+0

возможно, переназначение силы, когда вы видите эту ошибку? – Shubhank

+0

Можете ли вы решить это? – Borzh

+0

Нет, не полностью. Я заметил, что webView's shouldStartLoadWithRequest испытывает бит задержки, уменьшает частоту возникновения этих ошибок. –

ответ

1

У меня была аналогичная проблема, когда я удалял файлы cookie, чтобы убедиться, что появился экран входа в систему, а не только с помощью текущего пользователя. Попробуйте (быстро):

let storage = HTTPCookieStorage.shared 
storage.cookieAcceptPolicy = .always 
+1

Я попробовал это, прежде чем размещать вопрос.К сожалению, это не решило мою проблему. –

0

Мне удалось решить эту проблему около часа назад.

Во-первых, НЕ используйте UIWebView или WebView; используйте вместо этого WKWebView.

Вы видите, что вам нужно реализовать метод

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error 

когда страница Войти вперед Instagram ты к вашему REDIRECT_URL, он не ориентироваться. Возможно, потому, что мы не выполняем авторизацию на стороне сервера, но только авторизацию на стороне клиента, а redirect_url не является допустимым URL-адресом. Мы ожидаем, что страницы, чтобы перенаправлять на недействительный URL, но когда это произойдет, WKWebView не вызывает метод

- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation 

или метод

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation 

Зв Что вам нужно сделать, так это сосредоточиться на этом первом методе, проверить переменную error и извлечь error.userInfo.

В моем случае, это, как я решил проблему:

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error 
{ 

    NSURL *err = [error.userInfo objectForKey:@"NSErrorFailingURLKey"]; 

    if([err.absoluteString hasPrefix:INSTA_REDIRECT_URL]){ 
     NSString *token = [[err.absoluteString componentsSeparatedByString:@"#access_token="] objectAtIndex:1]; 


     [Utils saveToken:token]; 
     [self.webView setHidden:YES]; 
     //open next view controller 
    }else{ 
     //TODO: No internet? something else went wrong.. 

     NSLog(@"Error: %@", error); 
    } 

} 

Надеется, что это помогает. Удачи! ;)

Смежные вопросы