2016-06-06 13 views
6

Ich folge Instagram authentication [empfohlene] Schritte mit UIWebView auf einer iOS App. Nach dem Eingeben der Anmeldedaten wird beim Laden des Logins eine Seite mit folgendem Fehler geladen.Fehler beim Einloggen auf Instagram in iOS App mit UIWebView

Diese Seite konnte nicht geladen werden. Wenn Sie in Ihrem Browser Cookies deaktiviert haben oder im privaten Modus surfen, versuchen Sie, Cookies zu aktivieren oder den privaten Modus zu deaktivieren, und versuchen Sie dann erneut, Ihre Aktion auszuführen.

Und das passiert nur beim ersten Durchlauf durch die Schritte der Authentifizierung; Beim nächsten Versuch funktioniert alles glatt wie Seide. Ich bekomme den Code suffixed, um url umzuleiten, und ich erbitte Zugangstoken, das es verwendet.

Screenshot:

enter image description here

Es ist schon eine andere Frage here und es hilft nicht.

EDIT: Es scheint wie Cookies Problem. Obwohl ich es noch nicht beheben konnte.

+0

vielleicht eine Kraftumleitung, wenn Sie diesen Fehler sehen? – Shubhank

+0

Konnten Sie das lösen? – Borzh

+0

Nein, nicht vollständig. Ich habe beobachtet, dass das webView-Skript shouldStartLoadWithRequest, das eine Verzögerung erfährt, die Häufigkeit des Auftretens dieses Fehlers reduziert. –

Antwort

1

Ich hatte ein ähnliches Problem, als ich Cookies löschte, um sicherzustellen, dass der Anmeldebildschirm angezeigt wurde und nicht nur den aktuell angemeldeten Benutzer. Versuchen Sie (swift):

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

Ich habe es versucht, bevor Sie die Frage stellen.Leider hat es mein Problem nicht gelöst. –

0

Ich habe es geschafft, dieses Problem vor einer Stunde zu lösen.

Erstens, verwenden Sie nicht UIWebView oder WebView; Verwenden Sie stattdessen eine WKWebView.

Sie sehen, müssen Sie das Verfahren implementieren

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

wenn instagram der Login-Seite vorwärts Sie Ihren redirect_url, es zu navigieren VERFEHLT. Wahrscheinlich, weil wir nicht die serverseitige Authentifizierung, sondern nur die clientseitige Authentifizierung verwenden und die redirect_url keine gültige URL ist. Wir erwarten um die Seite zu einer ungültigen URL umzuleiten, aber wenn das geschieht, wird die WKWebView die Methode

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

oder die Methode

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

So. nicht nennen Sie müssen sich auf diese erste Methode konzentrieren, die error Variable überprüfen und error.userInfo extrahieren.

In meinem Fall, das ist, wie ich das Problem gelöst:

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

} 

Hoffe, es hilft. Viel Glück! ;)