【问题标题】:Request instagram api acces token with cURL使用 cURL 请求 instagram api 访问令牌
【发布时间】:2016-08-25 10:08:32
【问题描述】:

我正在尝试从 instagram api 获取访问令牌,这是文档的示例请求

 curl -F 'client_id=CLIENT_ID' \
    -F 'client_secret=CLIENT_SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token

这是我的代码

<body>
    <?php
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, "https://api.instagram.com/oauth/access_token");
      curl_setopt($curl,CURLOPT_POST, true);
      curl_setopt($curl,CURLOPT_POSTFIELDS, "client_id=MYID&
        client_secret=MY_CLIENT_SECRET&grant_type=authorization_code&
        redirect_uri=http://localhost/pruebainst/pruebas.php&code=".$_GET['code']);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
      curl_setopt($curl, CURLOPT_TIMEOUT, 10);
      $output = curl_exec($curl);
      curl_close($curl);

      echo ($output);
     ?>
  </body>

使用此代码,我无法从 curl 请求中得到任何信息

【问题讨论】:

  • 现在仍然可以在 Facebook 上使用 Instagram Basic API!

标签: php curl instagram-api


【解决方案1】:

使用此代码将在重定向 URL 中为您提供访问令牌。

$client_id = 'YOUR CLIENT ID';
    $client_secret ='YOUR CLIENT SECRET';
    $redirect_uri = 'YOUR REDIRECT URI';

     $auth_request_url = 'https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_uri .'&response_type=token';
/* Send user to authorisation */
header("Location: ".$auth_request_url);

另外,如果您希望访问令牌以编程方式使用这个

$client_id = 'YOUR CLIENT ID';
    $client_secret ='YOUR CLIENT SECRET';
        $redirect_uri = 'YOUR REDIRECT URI';
    $code ='Enter your code manually';

    $url = "https://api.instagram.com/oauth/access_token";
    $access_token_parameters = array(
        'client_id'                =>     $client_id,
        'client_secret'            =>     $client_secret,
        'grant_type'               =>     'authorization_code',
        'redirect_uri'             =>     $redirect_uri,
        'code'                     =>     $code
    );

$curl = curl_init($url);    // we init curl by passing the url
    curl_setopt($curl,CURLOPT_POST,true);   // to send a POST request
    curl_setopt($curl,CURLOPT_POSTFIELDS,$access_token_parameters);   // indicate the data to send
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   // to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   // to stop cURL from verifying the peer's certificate.
    $result = curl_exec($curl);   // to perform the curl session
    curl_close($curl);   // to close the curl session

     var_dump($result);

注意:$url 和 $redirect_uri 不相同

【讨论】:

  • 为什么这行得通?我在 { "error_type": "OAuthException", "code": 400, "error_message": "Invalid platform app" } 中返回“无效平台应用程序”的 Instagram 基本 API 的 curl 实现略有不同,类似于 stackoverflow.com/questions/59163021/… 之类的问题
猜你喜欢
  • 2019-03-23
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2021-11-27
相关资源
最近更新 更多