2016-08-16 4 views
6

を指定し、すべてが正常に働いていましたなどの承認URLを指定するには: https://api.instagram.com/oauth/authorize/?client_id=xxx&redirect_uri=myiosapp://authorize&response_type=codeiOSのInstagramの持つユーザ認証:私はできたとして、私は、ユーザーが過去にはOAuth 2.0の</p> <p>を使用してInstagramの経由で認証することができます(スウィフトを使用して)iOSアプリを開発していますREDIRECT_URI

ここでのキーポイントはREDIRECT_URIさmyiosapp://authorize

私の問題は、私はもはやそれにより不可能InstagramのでカスタムURLスキームを登録することが可能だということではありません(?)リダイレクトの処理を処理する私のアプリを通して贅沢に。私は、「有効なリダイレクトURIは:」そのようなURIを追加しようとした場合は、フィールド、私は次のエラーを取得する:

You must enter an absolute URI that starts with http:// or https://

専用のiOSのネイティブアプリケーションthrugh Instagramので認証を処理するための推奨方法は何ですか?

+1

これは以前は「もはや可能ではない」と答えていたかもしれないが、それが本当に事実なら、Instagramの文書やブログの投稿に誰かを参照できるかどうか疑問だった –

答えて

8

これを理解した後、同じ問題を抱えている人には私のソリューションを投稿すると思った。

まず、「セキュリティ」→「有効なリダイレクト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

最後に、私はそれが実行される前に、リダイレクト要求をインターセプトするUIWebViewDelegateshouldStartLoadWithRequestメソッドを使用して、代わりに私のオリジナルカスタム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を返すと一つの小さな注意点があります。これは何かに悪影響を及ぼさないようであり、おそらく無視されます。

関連する問題

 関連する問題