Önceden bir listeyle karşılaştırmak için TÜM kullanıcı Sayfası beğenilerini alması gereken basit bir Facebook uygulaması üzerinde çalışıyorum. Sayfa kimliğinin eşleşen bir tanımlayıcı olarak oluşturulmuş listesi.Facebook SDK (5.0) - Grafik API Talebi - Sayfalandırma (TÜM sonuçları nasıl alırsınız)
Beğendiklerimin bir listesini alabilirim; Ancak, yanıtta yalnızca sayfa başına "100" beğeni alabiliyorum. Bu kişilerin bazıları binlerce beğeni var, bu yüzden tüm sayfalardan tüm verileri toplayabildiğimden emin olmalıyım.
Basit bir $ fb-> sonraki ($ response); bana bir sonraki sayfa olacak (100 yerine 100 tane alabilirim, 200 alabilirim) .. ama, bir döngüye attığım zaman, scriptim sonsuz bir döngüde sıkışıp kalıyormuş gibi görünüyor. her zaman "sonraki" sayfa olacak Hiçbir sonuç mevcut olmasa bile.
Bu sonuçlardan kolayca geçiş yapmanın yerleşik bir yolu var mı, yoksa öğeler yinelenip vermediği için her yinelemede istek düzeyinde veri yapısını kontrol etmek zorunda mıyım?
//this results in an infinite loop
$request = $fb->request('GET', '/'.$fid['id'].'/likes?limit=9999');
do {
$graphNode = $fb->getClient()->sendRequest($request);
$paging = $graphNode->getGraphEdge();
$graphEdge = $graphNode->getGraphEdge()->asArray();
$likes = array_merge($likes, $graphEdge);
} while ($fb->next($paging)); // ERROR IS HERE!! SET while($paging = $fb->next($paging)); INSTEAD
TEPKİ YORUM VIA AŞAĞIDA GÜNCELLEME:
$request = $fb->request('GET', '/'.$fid['id'].'/likes?limit=9999');
$graphNode = $fb->getClient()->sendRequest($request);
$graphEdge = $graphNode->getGraphEdge();
if ($fb->next($graphEdge)) {
$likesArray = $graphEdge->asArray();
$lc = count($likesArray);
$totalLikes = array_merge($totalLikes, $likesArray);
while ($graphEdge = $fb->next($graphEdge)) {
$likesArray = $graphEdge->asArray();
$lic = count($likesArray);
$totalLikes = array_merge($totalLikes, $likesArray);
}
} else {
$likesArray = $graphEdge->asArray();
$totalLikes = array_merge($totalLikes, $likesArray);
}
mı? Bunu hayata geçirdim, ama görünüşe göre benim uygulamadan farklı değil. Birden fazla sayfa varsa, sonsuz bir döngü içinde sıkışır. Görünüşe göre, fb-> sonraki ($ data), birden fazla sayfa olduğu sürece her zaman "bir sonraki" var. –
Yaptığınız işi yapın ve bu 2 satırı kullanmak için beğenme kodunuzu değiştirin. – Juakali92
düzenlemeleri için cevabınıza bakın, – Juakali92