5

我正在处理 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();
    

我打算将$token_credentials值保存在数据库中,但它返回一个空数组:Array ( [ ] => )

我做错了什么?

4

3 回答 3

3

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

OAuth 图

我过去使用过 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 中。
  • 如果您坚持使用cookies,请使用setcookie功能。
于 2012-05-05T19:16:35.453 回答
0

你从哪里得到你的 TwitterOAuth 类?是标准班吗?还是你自己写的?我会尝试调试类本身并将更详细的输出放在类函数中。

于 2012-04-27T18:35:59.543 回答
0

你为什么使用cookies?使用 cookie 存在潜在风险,因为存储在客户端,请改用 SESSION

另一个问题:$redirect_url如果你把一个print_r$_COOKIE['oauth_token']另一个做成一个,r 是空的?

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

于 2012-05-03T17:53:27.223 回答