Моя php программа, использующая API Instagram, возвращает недействительный токен OAuth - PullRequest
0 голосов
/ 27 апреля 2020

Мой код работает нормально, получая код авторизации, а затем получая токен доступа. Но этот кажется неправильным. Я знаю, что он должен истечь через один час, и вот в чем может быть проблема. Но независимо от того, как часто я обновляю sh свою страницу локального хоста и нажимаю на ссылку для авторизации, мне кажется, что я получаю один и тот же токен. Не вините мою структуру, пожалуйста. Функции еще впереди. Я запускаю это php на своем локальном хосте.

<html>
<body>
<?php
    require_once( 'InstagramBasicDisplay.php' );

    $client_id = '--myid--';
    $redirect_uri = 'https://localhost/test';

?>
<a href = "https://www.instagram.com/oauth/authorize?client_id=<?php echo $client_id; ?>&redirect_uri=<?php echo $redirect_uri; ?>&scope=user_profile,user_media&response_type=code">
Autorisieren
</a>
<?php 

    // authorization code
    if ( isset($_GET['code']))
    {
        $authorization_code = $_GET['code'];

        // preparing POST request to API

        // data string including necessary parameters
        $data = array(
            'client_id' => $client_id,
            'client_secret' => '--mysecret--',
            'code' => $authorization_code,
            'grant_type' => 'authorization_code',
            'redirect_uri' => $redirect_uri,
        );

        // connecting to API
        $url = 'https://api.instagram.com/oauth/access_token';
        $ch = curl_init($url);

        // url for API request
        $postString = http_build_query($data, '', '&');


        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        curl_close($ch);
        if ( isset($response))
        {
            // access token
            $access_token = $_GET['code'];
            echo $access_token;

        $data = array(
            'fields' => array(
                'account_type',
                'id',
                'media_count',
                'username',
            ),
            'access_token' => $access_token,
        );


        $url = 'https://graph.instagram.com/me';
        $ch = curl_init($url);

        // url for API request
        $postString = http_build_query($data, '', '&');


        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        curl_close($ch);

        echo $response;
        }
    }


    //--------------------------------------------------------------//



?>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...