Search code examples
phpcurlinstagram-api

Request instagram api acces token with cURL


I'm trying to get the acces token from instagram api this is the sample request of the documentation

 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

and this is my code

<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>

With this code I don't get anything from curl request


Solution

  • Using this code will give you the Access Token in the redirecting 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);
    

    Also if you want the Access Token programmatically use this one

    $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);
    

    NOTE: $url and $redirect_uri are not same