Instagramからaccess_tokenを取得して、Basic Display APIを新しいアプリに使用しようとしています(Webページにツイートを表示するだけです)。
私は次の手順に従いました: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started
しかし、私はステップ5:コードをトークンに交換するのに行き詰まっています
CURLリクエストは常に、「一致するコードが見つからなかったか、すでに使用されていました」というメッセージとともに400エラーを返します。
しかし、多くのテストの後で、access_tokenを1回だけ取得しましたが、約1時間後に有効期限が切れました。これは非常にランダムなようです。
Instagram Basic Display APIはかなり新しいようです。少し前に、私は https://www.instagram.com/developer/ Webサイトで作成されたアプリを使用し、以前は機能していました。今、このサイトはこのメッセージを表示します:
更新:2019年10月15日より、Instagram Basic Display APIを支持して、Instagram APIプラットフォームでの新しいクライアント登録と許可レビューが中止されます。
... developers.facebook.comへのリンクがあります。
アプリケーションを実装しようとしたときにこの問題が発生しました。
私の問題は、権限を許可したときに生成されるコードでした。
生成されたコードの末尾から#_を削除して、トークンの生成を再試行してください
生成されたコードの例: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_
生成されたコードが編集: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A
彼らがあなたに与えるコードの最後にある末尾の#_を削除するだけで成功しました。それがあなたの問題であったかどうかわかりませんか?
https://developers.facebook.com/support/bugs/436837360282557/
元のドキュメント( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started )に従ってコマンドラインツールを使用しようとしましたが、うまくいきませんでした。 ..
3つの簡単なステップで実行する内容は次のとおりです
https://api.instagram.com/oauth/access_token
へのリクエストを作成します[〜#〜] not [〜#〜]params。x-www-form-urlencoded
オプションが有効になっていることを確認してください。200 OK
のステータスと、access_token
とuser_id
の両方を含む応答を取得するはずです。{
"access_token": "IGQVJYUXlDN...",
"user_id": 17841400...
}
幸せな日々!!
正しい設定については、スクリーンショットを参照してください。
私は解決策を見つけました。
直接URIは、最初に使用したものと同じでなければなりません。
例あなたが使う
www.abc.com/auth
コードを取得します。トークンを交換する場合、redirect_uriは以下と同じでなければなりません。
www.abc.com/auth
私も同じ問題を抱えていたので、キャッシュ、Cookie、その他のブラウザデータをクリアすることを解決しました。
それから私は新しい要求をしました。
試してみてください。
以前のInstagram APIも使用していました。新しいAPIでコードを機能させるには、いくつか変更する必要がありました。あなたが何を使っているのかわからない、これは私がPHPでそれをした方法です。
$url = 'https://api.instagram.com/oauth/access_token';
$fields = array(
'app_id' => 'YOUR_APP_ID',
'app_secret' => 'YOUR_APP_SECRET_ID',
'grant_type' => 'authorization_code',
'redirect_uri' => 'YOUR_REDIRECT_URL',
'code' => $code
);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
//get the access token from the string sent from Instagram
$splitString = explode('"access_token":', $result);
$removeRest = explode(',', $splitString[1]);
$withSpace = str_replace('"','', $removeRest[0]);
$access_token = str_replace(' ','', $withSpace);