これを理解した後、同じ問題を抱えている人には私のソリューションを投稿すると思った。
まず、「セキュリティ」→「有効なリダイレクトURI」フィールドで、Instagramにカスタムスキーマを許可しないようにします。代わりに、私は一意に特定できる有効なURIを入力します。例:http://www.mywebsite.com/instagram_auth_ios
Instagramで許可しようとすると、そのURIに実際にWebページが存在しないにもかかわらず、そのURLをリダイレクトURIとして使用します。 例:https://api.instagram.com/oauth/authorize/?client_id=xxx&redirect_uri=http://www.mywebsite.com/instagram_auth_ios&response_type=code
最後に、私はそれが実行される前に、リダイレクト要求をインターセプトするUIWebViewDelegate
のshouldStartLoadWithRequest
メソッドを使用して、代わりに私のオリジナルカスタムURI(私は何を書き直す必要はありません。そのように)呼ぶことにします。ここで私はその方法を書いた方法は次のとおりです。
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
guard let url = request.URL where url.host == "www.mywebsite.com" && url.path == "/instagram_auth_ios" else { return true }
guard let authUrl = NSURLComponents(URL: url, resolvingAgainstBaseURL: false) else { return true }
// Customize the scheme/host/path, etc. as desired for your app
authUrl.scheme = "myappschema"
authUrl.host = "instagram"
authUrl.path = ""
UIApplication.sharedApplication().openURL(authUrl.URL!)
return false
}
それは常にエラー「中断フレームのロード」と文句を言うことでshouldStartLoadWithRequest方法ではfalseを返すと一つの小さな注意点があります。これは何かに悪影響を及ぼさないようであり、おそらく無視されます。
これは以前は「もはや可能ではない」と答えていたかもしれないが、それが本当に事実なら、Instagramの文書やブログの投稿に誰かを参照できるかどうか疑問だった –