開発モードにあり、omniauthに登録できるRailsアプリケーションで作業しています。
ホストは
http://localhost:3000/
私は宝石を使用しています:
gem 'omniauth'
gem 'omniauth-foursquare'
gem 'omniauth-instagram'
Omniauthを使ってFoursquareに登録すると、まったく問題はありません。すべての設定が正しく、Foursquare開発者設定のredirect_uriがホスト(localhost:3000)と等しい
ただし、Instagramクライアントマネージャーにまったく同じredirect_uri(localhost:3000)を入力した場合。 Instagramは私にこれを与えます:
{
"code": 400,
"error_type": "OAuthException",
"error_message": "Redirect URI does not match registered redirect URI"
}
このURLに基づいて:
https://instagram.com/oauth/authorize?response_type=code&client_id=<ID>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Finstagram%2Fcallback&state=18415adf24dd97873e61094f67c0fb7a94857fedf93e9d2e&scope=basic
*
Instagramによると、私は何を間違っているのですか?これをどのように修正する必要がありますか?
自分で問題を修正しました。 redirect_uriとしてlocalhost:3000/auth/instagram/callback
を追加しましたが、うまくいきました。
私は追加する必要がありました
http://localhost:3000/users/auth/instagram/callback
deviseを使用しているため、コールバックURIとして。
リダイレクトURIを指定する場合 http:// localhost:30 は http:// localhost:3000 / (末尾のスラッシュに注意)と同じではありません。
コールバックURIが正確に一致することを確認してください。
これはRuby固有のものではありませんが、これと格闘している他の人にとっては、これが私を乗り越えたものです(注:上記の答えには何もうまくいきませんでした):
1. Edit your Client on Instagram Developer and uncheck Disable implicit OAuth.
2. Click Update Client to save it.
3. Now go to https://instagram.com/oauth/authorize/?client_id=[CLIENT_ID]&redirect_ur.... Just change [CLIENT_ID] and [REDIRECT_URI] with their values.
4. After that you will be redirected to [REDIRECT_URI]/#access_token=[ACCESS_TOKEN]. Get it and place it on the Instagram Access Token textbox.
(出典: https://www.drupal.org/project/instagram_feeds/issues/2140479 )
{「error_type」:「OAuthException」、「code」:400、「error_message」:「リダイレクトURIは登録済みリダイレクトURIと一致しません」}
Instagramからアクセストークンを取得する方法
InstagramでサンドボックスクライアントAPIを登録するときは、ウェブサイトのURLが同じでなければなりません https://www.instagram.com/developer/
ここでは、WebサイトのURLを使用しました: https://adlivetech.com 有効なリダイレクトURI: https://adlivetech.com/
ライブWebサイトの場合、 https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token を使用して、アクセストークンを簡単に取得できます。
上記のURL "CLIENT-ID"をクライアントIDに置き換えます。上記のURL "REDIRECT-URI"リダイレクトURLを次のようなドメイン名にします。 http://adlivetech.com
Drupagramモジュール(Drupal 7)の場合:http://localhost:3000/instagram/oauth
as redirect_uri
私は何年もこれをいじくり回しました..おそらく変更されていますが: http:// localhost:3000/users/auth/instagram/int_callback は私にとって最終的に機能したコールバックURIでした。私が抱えていた唯一の問題は、それが正確に間違ったコールバックURIであり、コードを変更するのではなく、Instagramのセットアップに集中する必要があることをここで見たかったということでした..エラーメッセージを取得することは、他のすべてが機能していることを意味します(これまでのところ)、そうしないと、その特定のエラーメッセージが表示されません。幸運を!! -気を散らさないでください!
問題:Oauth2 Instagram API「リダイレクトURIが登録済みリダイレクトURIと一致しない
私の解決策:ng-cordova-oauth.jsファイルを確認し、その中のinstagram関数を確認してください。 redirect_uriの値がInstagramの開発者コンソールでアプリケーションを登録するのと同じであることを確認します。同じ場合は適切に動作します。それ以外の場合は上記の問題が発生します。
この問題があり、instagramに提供されるリダイレクトURIが使用しているものとまったく同じである場合、一部のユーザーは私のinstagram apiで私のウェブサイトアドレスをhttp://www.example.com/login
として入力していることがわかりましたhttp://example.com/login
でした。
次に、URLに文字列www
が存在するかどうかを検出するphpスクリプトを作成し、www
なしで同じページにリロードします。
if(strpos($_SERVER['HTTP_Host'], 'www.') !== FALSE) {
header("Location: ".str_replace('www.', '', $_SERVER['HTTP_Host'].'/'.$_SERVER['REQUEST_URI']));
}