似乎有点奇怪。
我正在使用Elliot Haughin's Twitter library的CodeIgniter。顺便说一下,它是一个出色的API。
但是,我在config文件夹的“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;
...
...
解决此问题的最佳方法是什么?
答案 0 :(得分:0)
如果您没有检查有效的oauth_token,为什么在查询字符串中有oauth_token? 我假设你想在某个时候声明已经设置了oauth_token并且你只是使用oauth_token = 1作为参数?
该库设置为始终针对oauth_token进行测试,如果您正在自动加载它,那么以任何其他方式执行它并不是一个可行的调整。你需要一个运行的控制器(也许是方法)的白名单/黑名单,这几乎无法实现自动加载。
如果真的需要使用oauth_token = 1,你可以将其改为
if ( isset($_GET['oauth_token']) && $_GET['oauth_token']!==1)
如果您为oauth_token使用了多个值(或者如果您担心可以通过将oauth_token = X附加到URL来触发错误),则可以尝试使用正则表达式,假设所有oauth_tokens都遵循模式(32个字符长等)。
或者你也可能只是退出/返回false,具体取决于$ token = $ this-> _getAccessToken()中返回的内容。取决于代码中其他地方发生的事情。看起来像返回false应该只是工作。