2016-06-17 11 views
0

Ich verwende den folgenden Block Anwender meiner App erlauben, mit Instagram zu genehmigen:iOS Swift - Instagram API erhalten Antwort von WebView NSURL Anfrage

func authorizeInstagram() { 

     let myWebView:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height)) 
     myWebView.delegate = self 
     myWebView.loadRequest(NSURLRequest(URL: NSURL(string: "https://instagram.com/oauth/authorize/?client_id=xxxxxxxxxxxxxxxxxx&redirect_uri=xxxxxxxxxxx/&response_type=token")!)) 
     self.view.addSubview(myWebView) 
} 

Meine Frage ist, wie kann ich die reponse JSON aus der get webview NSURL-Anfrage, sobald der Benutzer die Authentifizierung abgeschlossen hat?

+0

Wie kann ich den Code abrufen, damit ich ihn für die Antwort-Token-URL verwenden kann? Ich bin jetzt ein wenig verwirrt Hast du deine Lösung bekommen? [Referenz] (https://www.instagram.com/developer/authentication/) –

Antwort

0

in Delegatmethode Sie die Anfrage erhalten und finden es URL.absoluteString, welcher Code Sie in der Zeichenfolge sein wird:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let str = request.URL?.absoluteString 
    print(str) 
    return true 
} 

hoffen, dass es hilfreich sein: D

0

In der Datei info.plist Sie registrieren die App unter URL-Typen. Fügen Sie den Bezeichner als Bundle-ID, das URL-Schema als Weiterleitung und den Editor als Rolle ein.

Wenn der Benutzer die Auth in der AppDelegate erfolgt Abschluss wieder in das Verfahren genannt:

func application(application: UIApplication, 
    openURL url: NSURL, 
    sourceApplication: String?, 
    annotation: AnyObject?) -> Bool 

Innen, die Sie durch die Antwort analysieren kann. Hier ein Beispiel in C#, habe es nicht in swift, sollte aber nicht schwer zu übersetzen sein. Ich hoffe, das hilft!

if (url.Scheme == "youappscheme") 
{ 
    var queryParams = url.Query.Split('&'); 
    // grab the one you want 
    return true; 
}