web-dev-qa-db-ja.com

Instagram Basic Display APIのaccess_tokenを取得できません

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へのリンクがあります。

9

アプリケーションを実装しようとしたときにこの問題が発生しました。
私の問題は、権限を許可したときに生成されるコードでした。
生成されたコードの末尾から#_を削除して、トークンの生成を再試行してください

生成されたコードの例: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

生成されたコードが編集: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A

2
Rômulo Milani

彼らがあなたに与えるコードの最後にある末尾の#_を削除するだけで成功しました。それがあなたの問題であったかどうかわかりませんか?

https://developers.facebook.com/support/bugs/436837360282557/

2
Emmanuel

元のドキュメント( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started )に従ってコマンドラインツールを使用しようとしましたが、うまくいきませんでした。 ..

3つの簡単なステップで実行する内容は次のとおりです

  1. 最初に:Postmanをインストールします https://www.postman.com/downloads/
  2. 本文にパラメータを指定してPOST https://api.instagram.com/oauth/access_tokenへのリクエストを作成します[〜#〜] not [〜#〜]params。x-www-form-urlencodedオプションが有効になっていることを確認してください。
  3. これで、200 OKのステータスと、access_tokenuser_idの両方を含む応答を取得するはずです。
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

幸せな日々!!

正しい設定については、スクリーンショットを参照してください。

enter image description here

1
Anas

私は解決策を見つけました。

直接URIは、最初に使用したものと同じでなければなりません。

例あなたが使う

www.abc.com/auth 

コードを取得します。トークンを交換する場合、redirect_uriは以下と同じでなければなりません。

www.abc.com/auth
0
JackWu

私も同じ問題を抱えていたので、キャッシュ、Cookie、その他のブラウザデータをクリアすることを解決しました。

それから私は新しい要求をしました。

試してみてください。

0
Ueslen Santos

以前の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);
0
Nobody