2015-02-09 200 views
4

我正在使用TwitterOAuth PHP库将我的网页连接到Twitter,以检索经过身份验证的用户数据,但它根本不起作用,我从昨天开始一直在尝试,而且我还没有想出了如何去做。Twitter oAuth无效的请求令牌

这是我的代码:

$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,但它不起作用。
感谢您的帮助。

回答

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']我已经发现之前。

+0

非常感谢。这是我需要的最后一点帮助。奇怪,这让我过了很久。 – 2015-07-26 06:04:59

+1

如果有人出现在这里,并且像我一样,在这里找不到解决方案,那么立即显而易见:1)请求令牌后,需要将该令牌数据保存在某处。 2)然后,当你获得一个访问令牌时,你必须将请求令牌数据传递给''''''''''''''''' – curtisblackwell 2015-09-28 02:13:56

+0

我使用相同的方法,但叽叽喳喳拒绝存储'$ _SESSION ['access_token']'我得到了sae消息''无效的请求令牌。' – 2016-04-19 13:04:19