推特oAuth请求令牌无效

4
我将使用TwitterOAuth PHP库来连接我的网页与Twitter,以获取已认证用户的数据。但是,目前完全不起作用,我一直在尝试解决这个问题,但至今仍未找到解决方法。
以下是我的代码:
    $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
    $credentials = $twitter->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
    $url = $twitter->url("oauth/authorize", array("oauth_token" => $credentials['oauth_token']));
    $_SESSION["oauth_token"] = $credentials["oauth_token"];
    $_SESSION["oauth_token_secret"] = $credentials["oauth_token_secret"];
    ?>
    <input type="button" name="contactTwitter" id="contactTwitter" onClick='window.location="<?php echo $url; ?>"' value="Connect to Twitter!"/>
    <?php
    if(isset($_GET['oauth_verifier'])) :
        $at=$twitter->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
        var_dump($at);
    endif;

它根本不起作用。我找到了许多解决TwitterOAuth问题的结果,但没有一个帮助我。我已经理解了Twitter API的功能,如发送request_token,接收token_verifiers和获取access_tokens,但在这里它不起作用。
感谢您的帮助。

1个回答

6

问题已解决。
我使用另一个PHP文件获取TwitterOAuth回调结果,将access_token发送到之前未能工作的页面。
如果有人需要这个,我会发布callback.php代码:

require_once('config.php');
session_start();
use Abraham\TwitterOAuth\TwitterOAuth;
$request_token = array();
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];

$connection = new TwitterOAuth(TW_CONSUMER_KEY, TW_CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));

if (200 == $connection->lastHttpCode()) {
    $_SESSION['access_token'] = $access_token;
    unset($_SESSION['oauth_token']);
    unset($_SESSION['oauth_token_secret']);
    $_SESSION['status'] = 'verified';
} else {
    session_destroy();
}

header('Location:./reg.php?st=3');

然后,在注册页面中,我只需重复使用之前找到的存储的 $_SESSION['access_token']


非常感谢您。这是我需要的最后一点帮助,让我成功了。真奇怪这花了我这么长时间。 - Coffee Cup
1
如果有其他人出现在这里,并且像我一样没有立即找到解决方案:1)请求令牌后,您需要将该令牌数据保存在某个地方。 2)然后,当您获取访问令牌时,必须将请求令牌数据传递给“TwitterOAuth”实例化。 - Curtis Blackwell
我使用了相同的方法,但Twitter拒绝存储$_SESSION['access_token'],我收到了一个"Sae message 'Invalid request token.'"`错误信息。 - Salem
我想我会在这里发布我的问题,但是我的问题与成功向其他用户帐户发送状态非常相似,但存储access_token仍然让我感到困惑,我认为oauth API会在每个$connection->oauth请求中进行更新。 - Salem
1
@SalemF 每次您请求另一个代码时,先前的代码(或已保存在会话中的代码)将变为无效。请仔细检查此问题,因为这是一个非常常见的问题。 - CapitanFindus
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接