2016-10-02 128 views
0

我想通過Twitter API檢索跟隨某個其他用戶(例如@Google)的用戶的所有Twitter ID。雖然請求在Postman中起作用,但我無法在PHP中使用它。看來$ userids不是一個字符串,所以json_decode無法處理它。下面的代碼。謝謝你的幫助!從Twitter API響應處理JSON對象

<?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

$用戶ID是一個數組,你可以在一個新的TwitterOAuth來源看:

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

這意味着你不必json_decode()再次,因爲它已經是一個PHP數組。

+0

啊好的,謝謝!我現在試圖通過保存在數組中的每個用戶標識和光標(它位於響應的最後)將其保存在數據庫中。在介紹數據庫複雜性之前,我只想回顯ID以查看它是否有效。然而,當我使用以下代碼:'for($ i = 0; $ i <= 5000; $ i ++){ echo「

"; echo $userids["ids"]; echo "
」;我得到以下錯誤:致命錯誤:不能使用stdClass類型的對象作爲數組在第35行中的/Applications/XAMPP/xamppfiles/htdocs/fetchusers.php ---可能是一個微不足道的錯誤,但我是卡住。謝謝! – coderloop

+0

編輯:已解決。 $ userids顯然是StdClass的一個對象,它包含(!)數組「ids」。所以解決方案是'echo $ userids-> ids [5];'以得到例如id號5和'echo $ userids-> next_cursor;'來獲得遊標屬性。 – coderloop

+0

如果您想知道哪個類型的變量,您可以始終使用'gettype($ var)'。 – hazelnoot