Проблемы с декодированием данных JSON из Twitter API (THM oauth) - PullRequest
1 голос
/ 03 августа 2011

Я использую tmhOAuth.php / class для входа в твиттер.Я успешно вошел в систему и отправил твит.

Когда я использую скрипт friends.php, у меня возникают некоторые проблемы при вставке в базу данных.Я действительно считаю, что моя проблема лежит где-то с переменной $ paging в коде.Потому что это цикл только семь раз.Я подписан на 626 человек, поэтому мои $ id - 626, а затем $ paging - 7.

Когда я запускаю php в веб-браузере, я могу извлечь только 7 из подписчиков (то есть подписчика # 626)., следующий за пользователем 526, следующий за пользователем 426 ...) Кажется, что он повторяет последнего пользователя на каждом запросе страницы.Частично это связано с запросом 100 идентификаторов пользователей одновременно через константу PAGESIZE.Когда я настраиваю $ paging под другим номером, таким как число 626, я получаю {"errors": [{"code": 17, "message": "Нет совпадений пользователей для указанных терминов"}]}

К сожалению, я подозреваю, что это довольно простая проблема зацикливания php, но после того количества времени, которое я потратил, пытаясь взломать это, я больше не могу думать прямо.

Заранее спасибо.

define('PAGESIZE', 100);
require 'tmhOAuth.php';
require 'tmhUtilities.php';

if ($tmhOAuth->response['code'] == 200) {
$data = json_decode($tmhOAuth->response['response'], true);
$ids += $data['ids'];
$cursor = $data['next_cursor_str'];
} else {
echo $tmhOAuth->response['response'];
break;
}
endwhile;

// lookup users
$paging = ceil(count($ids) / PAGESIZE);
$users = array();
for ($i=0; $i < $paging ; $i++) {
$set = array_slice($ids, $i*PAGESIZE, PAGESIZE);
$tmhOAuth->request('GET', $tmhOAuth->url('1/users/lookup'), array(
'user_id' => implode(',', $set)
));

// check the rate limit
check_rate_limit($tmhOAuth->response);

if ($tmhOAuth->response['code'] == 200) {
$data = json_decode($tmhOAuth->response['response'], true);
if ($tmhOAuth->response['code'] == 200) {
$data = json_decode($tmhOAuth->response['response'], true);
$name = array();
foreach ($data as $val)
    {
        $name = $data[0]['screen_name'];
    }
    echo "this is the screen name  " .$name. "\n";
    $users += $data;
} else {
echo $tmhOAuth->response['response'];
break;
}

}
var_dump($users);
?>

Данные, которые я пытаюсь отобразить, затем проанализировать и вставить в базу данных, являются стандартными данными JSON в Твиттере, поэтому я не буду включать их в сообщение.Любая помощь будет

1 Ответ

0 голосов
/ 05 августа 2011

Проблема решена:

  foreach ($data as $val)
{
    $name = $val['screen_name'];
    echo "this is the screen name  " .$name. "\n";
    $users[] = $name;
}
...