CodeIgniter Twitter API (Elliot Haughin's), фиксирующий любой URL, получает параметры с "oauth_token" в нем - PullRequest
3 голосов
/ 10 сентября 2011

Кажется немного странным.

Я использую CodeIgniter с библиотекой Эллиота Хогена в Твиттере . Между прочим, это отличный API.

Однако я автоматически загружаю эту библиотеку в «autoload.php» в папке конфигурации, и я заметил, что ЛЮБОЙ URL, имеющий параметр URL «oauth_token», захвачен этой библиотекой.

Например, когда я печатаю

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;
    ...
    ...

Как лучше всего это исправить?

1 Ответ

0 голосов
/ 12 сентября 2011

Почему у вас есть 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 должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...