Twitter OAUTH返回一个空数组

时间:2012-04-27 14:19:15

标签: php oauth twitter twitter-oauth

我正在进行Twitter身份验证,一切似乎都运行良好,直到getAccessToken返回Array ( [ ] => )

我做了什么:

  1. 第一阶段:

    $connection = new TwitterOAuth('xxxxxxxx','xxxxxxxx');
    
    $temporary_credentials = $connection->getRequestToken('http://example.com/profile.php?passurl=1');
    
    $redirect_url = $connection->getAuthorizeURL($temporary_credentials);
    
    $_COOKIE['oauth_token'] = $temporary_credentials['oauth_token'];
    
    $_COOKIE['oauth_token_secret'] = $temporary_credentials['oauth_token_secret'];
    
    header("Location: $redirect_url");
    
  2. 第二阶段(这是我遇到问题的地方)

    $connection =
            new TwitterOAuth(
                    'xxxxxxxxxx',
                    'xxxxxxxxxx',
                    $_COOKIE['oauth_token'],
                    $_COOKIE['oauth_token_secret']
                    ); 
    $token_credentials = $connection->getAccessToken();
    
  3. 我打算在数据库中保存$token_credentials值,但它会返回一个空数组:Array ( [ ] => )

    我不对的是什么?

3 个答案:

答案 0 :(得分:3)

您是否将“oauth_verifier”传递给getAccessToken方法?在您给出的示例代码中,您没有这样做。看一下这个图,特别是D部分

OAuth Diagram

我过去曾使用过twitteroauth,我记得这样做过。 (开始第二个fase)

$twitterOauth = new TwitterOAuth($AppId, $twSecret, $_COOKIE['oauth_token'], $_COOKIE['oauth_token_secret']);
$twToken = $twitterOauth->getAccessToken($_REQUEST['oauth_verifier']);

$newTwitterOauth = new TwitterOAuth($AppId,  $twSecret, $twToken['oauth_token'], $twToken['oauth_token_secret']);
$response  = (array) $newTwitterOauth->get('account/verify_credentials');
var_dump($response);

我会做一些建议:

  • 我强烈建议您使用会话来完成工作,而不是在cookie中存储该信息。
  • 如果您坚持使用Cookie,请使用setcookie功能。

答案 1 :(得分:0)

你从哪里获得TwitterOAuth课程?这是标准课程吗?或者你自己写的?我会尝试调试类本身并在类函数中添加更详细的输出。

答案 2 :(得分:0)

你为什么要用cookies? 使用cookies是一种潜在的风险,因为它存储在客户端,而是使用SESSION

另一个问题: 在$redirect_url如果您制作print_r $_COOKIE['oauth_token']和另一个$_COOKIE['oauth_token'],则为空?

我问这个是因为如果你通过一些插件(比如firefox中的webdeveloper)或浏览器配置禁用cookie。也许你在$_COOKIE['oauth_token_secret']上使用空值, 和{{1}}。