Не удалось подтвердить подлинность временных учетных данных для Twitter Oauth - PullRequest
0 голосов
/ 06 апреля 2020

Я могу получить временные учетные данные и получить токен oauth, но когда я использую возвращенный токен для получения сведений о пользователе, я не могу получить его, таким образом, ошибка.

Я использую пакет thephpleague / oauth1-client и создал простой контроллер, где я следовал за их примером Twitter . Отсюда я получаю эту ошибку

League\OAuth1\Client\Credentials\CredentialsException: Received HTTP status code [401] with message "{"errors":[{"code":32,"message":"Could not authenticate you."}]}" when getting temporary credentials. in /var/www/html/PF.Site/Apps/TipsMarketplace/vendor/league/oauth1-client/src/Client/Server/Server.php:418

, и вот пример кода, который я создал.

        $server = new Twitter(array(
            'identifier' => 'my-identifier',
            'secret' => 'my-secret',
            'callback_uri' => "http://localhost:8080/twitter/auth",
        ));

        session_start();
        if (isset($_GET['user'])) {
            $tokenCredentials = unserialize($_SESSION['token_credentials']);

            $user = $server->getUserDetails($tokenCredentials);
            var_dump($user);
        } elseif (isset($_GET['oauth_token']) && isset($_GET['oauth_verifier'])) {
            $temporaryCredentials = unserialize($_SESSION['temporary_credentials']);

            $tokenCredentials = $server->getTokenCredentials($temporaryCredentials, $_GET['oauth_token'], $_GET['oauth_verifier']);

            unset($_SESSION['temporary_credentials']);
            $_SESSION['token_credentials'] = serialize($tokenCredentials);
            session_write_close();

            header("Location: http://{$_SERVER['HTTP_HOST']}/twitter/auth?user=user");
            exit;
        } elseif (isset($_GET['denied'])) {
            echo 'Hey! You denied the client access to your Twitter account!';
        }

        $temporaryCredentials = $server->getTemporaryCredentials();

        $_SESSION['temporary_credentials'] = serialize($temporaryCredentials);
        session_write_close();

        $server->authorize($temporaryCredentials);

1 Ответ

0 голосов
/ 07 апреля 2020

Оказывается, я не следовал за 3-ножным Oauth твиттером, который также указан в примере из библиотеки.

В моем коде выше, я пропустил $server->authorize($temporaryCredentials), где он покажет страницу авторизации / страницу входа в твиттер.

...