【问题标题】:Twitter OAUTH returns an empty arrayTwitter OAUTH 返回一个空数组
【发布时间】:2012-05-08 07:18:51
【问题描述】:

我正在处理 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 ( [ ] => )

我做错了什么?

【问题讨论】:

  • 请下次在发布之前尝试缩进你的代码,它完全不可读!
  • twitteroauth.php 中,将var_dump($response); 添加到http 函数的末尾。这将是从 Twitter 返回的原始响应。是错误还是访问令牌?
  • 这是返回的内容:string(147) "oauth_token=xxxxstringxxxx&oauth_token_secret=xxxxstringxxxx&oauth_callback_confirmed=true"
  • @abraham 返回:字符串(147)“oauth_token=xxxxstringxxxx&oauth_token_secret=xxxxstringxxxx&oauth_callback_con‌​firmed=true”。谢谢
  • 那是getRequestToken的响应。 getAccessToken 呢?

标签: php oauth twitter twitter-oauth


【解决方案1】:

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

【讨论】:

  • 我正在使用这个:github.com/abraham/twitteroauth...请提出任何修复建议。谢谢
  • 尝试在 github 上为该项目提交问题。你可能会在那里得到更好的响应,因为它是一个自定义类。
  • 还有其他可用的类吗?我真的需要让这个工作!啊!!!
  • 如果您是从头开始编写项目,我使用了thinphp.com,它对我来说运行正常。也许您可以从该项目中提取 OAuthTwitter 类
  • 拜托我可能无法从瘦 php 框架中提取类
【解决方案2】:

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

另一个问题: 在$redirect_url 中,如果你在$_COOKIE['oauth_token'] 中创建一个print_r 和另一个,r 为空?

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

【讨论】:

  • 我在网站上设置 SESSIONS 时遇到问题,因此暂时使用实际持有正确值的 COOKIES 进行测试。
【解决方案3】:

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

我过去使用过 twitteroauth,我记得是这样操作的。 (开始第二阶段)

$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功能。

【讨论】:

  • 是的,您遇到了两个问题:1. 我没有以正确的方式设置 cookie。 2. 我没有将 oauth _verifier 传递给 getAccessToken。
猜你喜欢
  • 2012-12-23
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2020-02-11
  • 2018-08-06
  • 2021-08-11
  • 2021-07-24
  • 2014-01-27
相关资源
最近更新 更多