我正在尝试将 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.';
}
}
当我尝试实现此目的时,我得到了无效或过期的访问 token 。
/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.'
}
)
}
我无法解决问题!知道这里有什么问题吗?
最佳答案
收到回调后,使用新的访问 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']);
关于php - Twitter OAuth-无效或过期的访问 token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28646829/