【问题标题】:Twitter oAuth Invalid request tokenTwitter oAuth 请求令牌无效
【发布时间】:2015-02-10 18:00:08
【问题描述】:

我正在使用 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,但在这里不起作用。
感谢您的帮助。

【问题讨论】:

    标签: php twitter oauth


    【解决方案1】:

    问题解决了。
    我使用另一个 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']。

    【讨论】:

    • 非常感谢。这是我越线需要的最后一点帮助。奇怪的是,这花了我这么长时间。
    • 万一其他人出现在这里,像我一样,在这里没有立即找到解决方案: 1) 请求令牌后,您需要将该令牌数据保存在某处。 2)然后当你得到一个访问令牌时,你必须将请求令牌数据传递给TwitterOAuth实例化。
    • 我使用相同的方法,但 twitter 拒绝存储 $_SESSION['access_token'] 我收到了 sae 消息 'Invalid request token.'
    • @SalemF 不知道您是否需要为此编写另一个问题,也许尝试发布您的代码。你确定你在 Stackoverflow 上找不到东西吗?顺便说一句,我在其他地方为我的项目重新使用了 Twitter,不得不说,这里的文档:twitteroauth.com 变得更好,我相信你可以在那里找到解决方案
    • @SalemF 每次您请求另一个代码时,前一个代码(或已保存在会话中的代码)都会失效。仔细检查一下,因为这是一个非常常见的问题
    猜你喜欢
    • 2017-03-14
    • 2012-06-22
    • 2011-09-05
    • 2017-01-10
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多