php - CodeIgniter Twitter API (Elliot Haughin's) 捕获任何 URL 获取其中包含 "oauth_token"的参数

标签 php codeigniter twitter

好像有点奇怪。

我将 CodeIgniter 与 Elliot Haughin's Twitter library 一起使用.顺便说一下,这是一个出色的 API。

但是,我在配置文件夹的“autoload.php”中自动加载这个库,我注意到这个库捕获了任何具有“oauth_token”URL 参数的 URL。

例如,当我输入

http://localhost/myapp/index.php/controller?oauth_token=1

然后报错

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: libraries/Tweet.php
Line Number: 205

我检查了这个库,发现下面的构造函数调用了一个检查 GET 参数的方法。

class tweetOauth extends tweetConnection {

  function __construct()
  {
    parent::__construct();
    ..
    ..
    ..
    $this->_checkLogin();
  }

方法“_checkLogin()”执行以下操作

private function _checkLogin()
{
  if ( isset($_GET['oauth_token']) )
  {
    $this->_setAccessKey($_GET['oauth_token']);
    $token = $this->_getAccessToken();
    $token = $token->_result;
    ...
    ...

解决此问题的最佳方法是什么?

最佳答案

如果您不检查有效的 oauth_token,为什么在查询字符串中包含 oauth_token? 我假设在某些时候您想声明已设置 oauth_token 并且您只是使用 oauth_token=1 作为参数?

该库设置为始终针对 oauth_token 进行测试,如果您要自动加载它,则以任何其他方式进行测试并不是真正可行的调整。您需要一个运行它的 Controller (可能还有方法)的白名单/黑名单,这几乎违背了自动加载的目的。

如果真的需要使用 oauth_token=1,您可以将其更改为

if ( isset($_GET['oauth_token']) && $_GET['oauth_token']!==1)

如果您为 oauth_token 使用了多个值(或者如果您担心您可以通过将 oauth_token=X 附加到 URL 来触发错误),您可以尝试使用正则表达式,假设所有 oauth_token 都遵循一种模式(32 个字符长等)。

或者,您也可以根据 $token = $this->_getAccessToken() 中返回的内容,退出/返回 false。取决于代码中其他地方发生的情况。看起来返回 false 应该就可以了。

关于php - CodeIgniter Twitter API (Elliot Haughin's) 捕获任何 URL 获取其中包含 "oauth_token"的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372560/

相关文章:

python - Tweepy 语法和 Twitter 流 api

php - cakePHP 中的条件

php - 警告 : imagedestroy(): 7 is not a valid Image resource

ios - 从 iOS 应用程序打开用户的推特个人资料页面

ruby-on-rails - 让 (omniauth-facebook) 和 (omniauth-twitter) 工作

php - 取消 Paypal 定期付款

php - 如何从 bitbucket 克隆一个 laravel 项目并使用 Sourcetree 在你的计算机上安装和运行?

php - 得分范围 PHP

codeigniter 区分 JOINed 表中的字段名称

php - 如何在codeigniter的电子邮件中显示图像?