2016-06-06 2 views
6

iOS 앱에서 UIWebView를 사용하는 단계는 Instagram authentication [권장] 단계입니다. 자격 증명을 입력 한 후 로그인을하면 다음 오류가있는 페이지가로드됩니다.UIWebView를 사용하여 iOS 앱에서 Instagram에 로그인하는 중 오류가 발생했습니다.

이 페이지를로드 할 수 없습니다. 브라우저에서 쿠키가 사용 중지되어 있거나 비공개 모드로 탐색중인 경우 쿠키를 사용하거나 비공개 모드를 사용 중지 한 다음 조치를 다시 시도하십시오.

그리고 이것은 인증 단계를 통해 처음 실행될 때만 발생합니다. 다음 시도에서는 모든 것이 실크처럼 매끄럽게 작동합니다. URL을 리디렉션하기 위해 접미사가 붙은 코드를 사용하여 액세스 토큰을 요청합니다.

스크린 샷 :

enter image description here

이미 또 다른 질문 here있다 그것은 도움이되지 않습니다.

편집 : 쿠키 문제인 것 같습니다. 그러나, 나는 아직 그것을 고칠 수 없었다.

+0

이 오류가 표시 될 때 강제로 리디렉션 할 수 있습니까? – Shubhank

+0

이 문제를 해결할 수 있습니까? – Borzh

+0

아니요, 완전히 아닙니다. webView의 shouldStartLoadWithRequest가 약간의 지연이 발생하면이 버그 발생 빈도가 줄어든 것을 관찰했습니다. –

답변

1

쿠키를 삭제할 때 현재 로그인 한 사용자 만 사용하지 않고 로그인 화면이 나타나는지 확인하는 것과 비슷한 문제가있었습니다. 시도해보십시오 (신속) :

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

나는 질문을 게시하기 전에 그것을 시도했다.불행히도, 그것은 내 문제를 해결하지 못했습니다. –

0

약 1 시간 전에이 문제를 해결할 수있었습니다.

먼저 UIWebView 또는 WebView를 사용하지 마십시오. 대신 WKWebView을 사용하십시오. 당신이 볼

, 당신은

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

이 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); 
    } 

} 

는 희망이 도움이 : 내 경우

이 내가 문제를 해결하는 방법입니다. 행운을 빈다. ;)

관련 문제