Instagram Basic Display API - 此授权码已被使用

Instagram Basic Display API - This authorization code has been used

我需要允许我平台的用户通过 Instagram 基本显示 API link 他们的 Instagram 帐户。 当我调用获取代码来交换访问令牌时,它总是相同的,导致下一步出错。

这些是我正在执行的步骤,遵循 this official guide:

  1. 使用这些参数的 GET 请求:https://api.instagram.com/oauth/authorize?client_id=XXXXX&redirect_uri=XXXXX&scope=user_profile&response_type=code
  2. POST 通过 cURL 请求 https://api.instagram.com/oauth/access_token PHP 将参数作为下面的第二个代码片段传递
  3. 在 PHP
  4. 中通过 cURL 使用 'https://graph.instagram.com/' . $result->user_id . '?fields=username&access_token=' . $result->access_token 获取请求

过程在 1 和 2 之间失败,因为第一步总是 return 相同的代码,即使 我用不同的帐户进行了多次尝试

这是代码请求的 HTML 表格。成功打开 Instagram 登录页面:

<a class="insta-con" href="https://api.instagram.com/oauth/authorize?client_id=XXXXX&redirect_uri=XXXXX&scope=user_profile&response_type=code">
   <img src="assets/images/instalogo.png" alt="Connetti a Instagram">
   <p>Connect to Instagram</p>
</a>

登录表单 return 始终使用相同的代码,也使用不同的帐户,导致在下一个请求中出现错误 {"error_type": "OAuthException", "code": 400, "error_message": "This authorization code has been used"}

$fields = array(
    'client_id'     => 'XXXXXX',
    'client_secret' => 'XXXXXXXXX',
    'grant_type'    => 'authorization_code',
    'redirect_uri'  => 'https://www.XXXXXXX.it/connect.php',
    'code'          => $_GET['code']
);
$url = 'https://api.instagram.com/oauth/access_token';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_VERBOSE,true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
$result = curl_exec($ch);
if(curl_errno($ch)) {
    echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
$result = json_decode($result, true);

所以我的问题是:为什么我使用不同的帐户总是得到相同的代码?

我通过验证企业或使用 Facebook 开发者控制台中的个人验证解决了这个问题。

在使用 API 之前,您需要验证您的身份 单击“设置”>“基本设置”,然后滚动到“个人验证”或业务验证并完成所有步骤。