Twitter OAuth – Недействительный токен доступа илистек

Я пытаюсь отправить сообщение с помощью twitteroauth с последней версией. Ниже мой код.

require APP."Vendor/twitteroauth-master/autoload.php"; // twitter v0.5.1 SDK if(isset($_REQUEST['oauth_verifier'])) { $request_token = []; $request_token['oauth_token'] = $this->Session->read('twtr_oauth_token'); $request_token['oauth_token_secret'] = $this->Session->read('twtr_oauth_token_secret'); /* If denied, bail. */ if (isset($_REQUEST['denied'])) { exit('Permission was denied. Please start over.'); } /* If the oauth_token is not what we expect, bail. */ if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) { $this->Session->write("twtr_oauth_token" , ''); $this->Session->write("twtr_oauth_token_secret" , ''); exit; } debug($request_token); /* Create TwitteroAuth object with app key/secret and token key/secret from default phase */ $connection = new TwitterOAuth("KEY", "SECRET", $request_token['oauth_token'], $request_token['oauth_token_secret']); debug($connection); $content = $connection->get('account/verify_credentials'); debug($content); /* Request access token from twitter */ $access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier'])); /** Finally post things */ $result = $connection->post("statuses/update", array("status" => "hello world")); if(isset($result->errors) && count($result->errors) > 0) { debug($connection->post("statuses/update", array("status" => "hello world"))); exit; } $this->redirect("http://twitter.com"); } else { $connection = new TwitterOAuth("KEY", "SECRET"); /** Get Temp Token */ $request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => "https://180.211.99.162:9051/widgetapi/twitterOauth")); switch ($connection->getLastHttpCode()) { case 200: /** Write OAuth token and secret into session */ $this->Session->write("twtr_oauth_token" , $request_token['oauth_token']); $this->Session->write("twtr_oauth_token_secret" , $request_token['oauth_token_secret']); /** Build Auth URL */ $url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token'])); /** Redirect */ $this->redirect($url); break; default: /* Show notification if something went wrong. */ echo 'Could not connect to Twitter. Refresh the page or try again later.'; } } 

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

Отладочная информация

  /app/Controller/WidgetapiController.php (line 258) array( 'oauth_token' => 'AU549WSBbnxvibRcU5jzUzOwFAoUiTXs', 'oauth_token_secret' => 'NRmkbByjjAPGQLJK06DaUauYfa38kpY6' ) /app/Controller/WidgetapiController.php (line 261) object(Abraham\TwitterOAuth\TwitterOAuth) { [protected] timeout => (int) 5 [protected] connectionTimeout => (int) 5 [protected] decodeJsonAsArray => false [protected] userAgent => 'TwitterOAuth (+https://twitteroauth.com)' [protected] proxy => array() [private] response => object(Abraham\TwitterOAuth\Response) { [private] apiPath => null [private] httpCode => (int) 0 [private] headers => array() [private] body => array() [private] xHeaders => array() } [private] bearer => null [private] consumer => object(Abraham\TwitterOAuth\Consumer) { key => 'KEY' secret => 'SECRET' callbackUrl => null } [private] token => object(Abraham\TwitterOAuth\Token) { key => 'AU549WSBbnxvibRcU5jzUzOwFAoUiTXs' secret => 'NRmkbByjjAPGQLJK06DaUauYfa38kpY6' } [private] signatureMethod => object(Abraham\TwitterOAuth\HmacSha1) { } } /app/Controller/WidgetapiController.php (line 263) object(stdClass) { errors => array( (int) 0 => object(stdClass) { code => (int) 89 message => 'Invalid or expired token.' } ) } /app/Controller/WidgetapiController.php (line 271) object(stdClass) { errors => array( (int) 0 => object(stdClass) { code => (int) 89 message => 'Invalid or expired token.' } ) } 

Я не могу понять эту проблему! Любая идея, что здесь неправильно?

После того, как вы получили обратный вызов, снова инициализируйте класс новым токеном доступа

 /* Request access token from twitter */ $access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier'])); $connection = new TwitterOAuth("KEY", "SECRET", $access_token['oauth_token'], $access_token['oauth_token_secret']); 

Используя последнюю версию TwitterOAuth и с помощью ответа @ user3989103 в этом потоке и https://twittercommunity.com/t/twitter-oauth-verifier-does-not-always-work/31672 , то, что сработало для меня, было:

 $connection = new TwitterOAuth($key, $secret, $_SESSION['request_token'], $_SESSION['request_token_secret']); $access_token = $connection->oauth('oauth/access_token', array('oauth_verifier' => $_REQUEST['oauth_verifier'], 'oauth_token'=> $_REQUEST['oauth_token'])); $connection = new TwitterOAuth($key, $secret, $access_token['oauth_token'], $access_token['oauth_token_secret']); $credentials = $connection->get('account/verify_credentials');