2016-10-02 3 views
0

Я хочу получить все идентификаторы пользователей Twitter, которые следуют за другим пользователем (например, @Google) через API Twitter. Хотя запрос работает в Postman, я не могу заставить его работать на PHP. Кажется, что $ userids не является строкой, поэтому json_decode не может ее обработать. Код ниже. Спасибо за вашу помощь!Обработка объекта JSON из ответа Twitter API

<?php 
require "twitteroauth/autoload.php"; 

use Abraham\TwitterOAuth\TwitterOAuth; 

ini_set('max_execution_time', 600); 
ini_set('memory_limit', '1024M'); 

$consumerKey = 'redacted'; 
$consumerKeySecret = 'redacted'; 
$accessToken = 'redacted'; 
$accessTokenSecret = 'redacted'; 
$cursor = -1; // first page 

$connection = new TwitterOAuth($consumerKey, $consumerKeySecret, $accessToken, $accessTokenSecret); 
$content = $connection->get("account/verify_credentials"); 

$userids = $connection->get("followers/ids", ["cursor" => -1, "screen_name" => "google", "count" => 5000]); 

echo $userids; 

$data = json_decode($userids); 
foreach ($data as $ids => $value) { 
    // tbd 
} 
var_dump($data); 

?> 
+0

Итак, каково фактическое поведение кода? «Кажется, что' $ userids' не является строкой »- можете ли вы это проверить? – YakovL

ответ

0

$ UserIds является массивом, как вы можете видеть в источнике TwitterOAuth:

$response = JsonDecoder::decode($result, $this->decodeJsonAsArray); 

Это означает, что вы не должны json_decode() это снова, как это уже PHP массив.

+0

Ах ладно, спасибо! Теперь я пытаюсь пройти через каждый Идентификатор пользователя, который сохраняется в массиве, и курсор (который находится в самом конце ответа), чтобы сохранить их в базе данных. Прежде чем я привложу сложность БД, я просто хотел повторить идентификаторы, чтобы увидеть, работает ли это. Однако, когда я использую следующий код: 'for ($ i = 0; $ i <= 5000; $ i ++) { echo"

"; echo $userids["ids"]; echo "
"; } 'Я получаю следующую ошибку:' Fatal error: нельзя использовать объект типа stdClass как массив в /Applications/XAMPP/xamppfiles/htdocs/fetchusers.php в строке 35' --- Вероятно, тривиальная ошибка, но я застрял. Спасибо! – coderloop

+0

Редактировать: разрешено. $ userids, по-видимому, является объектом StdClass, который затем содержит (!) массив «ids». Таким образом, решение было «echo $ userids-> ids [5];», чтобы получить, например, идентификатор номер 5 и «echo $ userids-> next_cursor;», чтобы получить свойство курсора. – coderloop

+0

Если вы хотите узнать, какой тип переменной, вы всегда можете использовать 'gettype ($ var)'. – hazelnoot

Смежные вопросы