2016-06-06 47 views
6

Sto seguendo i passi Instagram authentication [consigliati] utilizzando UIWebView su un'app iOS. Dopo aver inserito le credenziali, l'accesso al login carica una pagina con il seguente errore.Errore di accesso a Instagram nell'app per iOS utilizzando UIWebView

Impossibile caricare questa pagina. Se hai disabilitato i cookie nel tuo browser o stai navigando in modalità privata, prova a abilitare i cookie o disattivare la modalità privata, quindi riprovare a eseguire l'azione.

E, questo accade solo in prima esecuzione attraverso i passaggi di autenticazione; al prossimo tentativo, tutto funziona liscio come la seta. Ottengo il codice suffisso per reindirizzare l'URL e richiedo il token di accesso che lo utilizza.

Screenshot:

enter image description here

C'è già un'altra domanda here e non aiuta.

EDIT: Sembra problema cookie. Tuttavia, non sono ancora riuscito a risolverlo.

+0

forse fare un reindirizzamento forzato quando si vede questo errore? – Shubhank

+0

Potresti essere in grado di risolvere questo? – Borzh

+0

No, non completamente. Ho osservato che dovrei notare che la funzione di riavvio di WebView dovrebbe rallentare la frequenza di questo evento. –

risposta

1

Ho avuto un problema simile quando stavo cancellando i cookie per assicurarmi che la schermata di accesso apparisse e non solo usando l'utente attualmente connesso. Try (swift):

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

L'ho provato prima di pubblicare la domanda.Sfortunatamente, non ha risolto il mio problema. –

0

Sono riuscito a risolvere questo problema circa un'ora fa.

Primo, NON utilizzare UIWebView o WebView; utilizzare invece WKWebView.

Vedete, è necessario implementare il metodo

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

quando pagina di login vi inoltra Instagram al tuo REDIRECT_URL, non riesce a navigare. Probabilmente perché non stiamo eseguendo l'autenticazione lato server, ma solo l'autenticazione lato client e redirect_url non è un URL valido. Ci aspettiamo la pagina per reindirizzare a un URL non valido, ma quando ciò accade, il WKWebView non chiama il metodo

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

o il metodo

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

So. Quello che devi fare è concentrarti su quel primo metodo, controlla la variabile error ed estrai error.userInfo.

Nel mio caso, questo è come ho risolto il problema:

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

} 

Speranza che aiuta. Buona fortuna! ;)