/ / Jak mogę uzyskać albumy na Facebooku ze zdjęciami od użytkowników - facebook-graph-api, facebook-fql, fql.multiquery

Jak mogę uzyskać albumy na Facebooku z obrazami od użytkowników - facebook-graph-api, facebook-fql, fql.multiquery

Tworzę aplikację na Facebooku i chcęwyświetlać albumy użytkowników z obrazem na okładkę, próbowałem z kodem # 1, ale jest to naprawdę bardzo wolne, ponieważ wykonuję wywołanie API na Facebooku w foreach, co sprawia, że ​​moja aplikacja trwa wiecznie, więc szukam innego sposobu, aby zrobić interfejs API zadzwoń tylko raz i uzyskaj wszystkie informacje, więc spróbowałem z FQL multi query (kod # 2), ale teraz mam problem, ponieważ jeśli album nie ma obrazu, nic nie zwróci, więc sprawdź moje kody, a jeśli masz jakikolwiek pomysł, jak to zrobić, bardzo to docenię;) Z góry dziękuję!

code#1
$albums = $facebook->api("/me/albums?limit=0&fields=id,name,count,cover_photo");
foreach($albums["data"] as $album)
{
// get all photos for album
$photos = $facebook->api("/{$album["id"]}/?fields=picture,name,count");
$foto = $photos["picture"];
$nombre = $album["name"];

$id = $album["id"];
$count = $album["count"];
$cover_photo = $album["cover_photo"];
$nombre = $nombre." (".$count.")";


echo "<li> <a href="album.php?numero_album=$id&nombre_album=$nombre " title="$nombre"><img src="https://graph.facebook.com/{$cover_photo}/" alt="$nombre" /> </a> </li>";
}


code#2
$multiQuery = "{
"albumes":"SELECT name,cover_pid,object_id,size FROM album WHERE owner=me()",
"portadas":"SELECT src_big FROM photo WHERE pid IN (SELECT cover_pid FROM #albumes)"
}";

$param = array(
"method" => "fql.multiquery",
"queries" => $multiQuery,
"callback" => "");
$queryresults = $facebook->api($param);

foreach($queryresults[0]["fql_result_set"] as $album)
{
$nombre = $album["name"];
$id = $album["object_id"];
$count = $album["size"];
$nombre = $nombre." (".$count.")";


echo "<li> <a href="album.php?numero_album=$id&nombre_album=$nombre " title="$nombre"><img src="https://graph.facebook.com/{$cover_photo}/" alt="$nombre" /> </a> </li>";
}

Odpowiedzi:

0 dla odpowiedzi № 1

więc próbowałem z FQL multi query (kod # 2), ale teraz mam problem, ponieważ jeśli album nie ma obrazu, nic nie zwróci

Naprawdę nie widzę tam twojego problemu. Jeśli wypróbuję twoje zapytania za pomocą eksploratora Graph API, otrzymam wszystkie moje albumy i zdjęcie na okładkę każdego z nich. (Więc to dla mnie 4 albumy i 3 zdjęcia).

Jeśli masz problem z określeniem, które zdjęcie pochodzi z którego albumu, podaj po prostu aid pole w obu zapytaniach.

to jest naprawdę bardzo powolne, ponieważ wykonuję połączenie facebook api w foreach, co sprawia, że ​​moja aplikacja trwa wiecznie

Oczywiście, że tak, ponieważ każde wywołanie interfejsu API oznacza kolejne żądanie HTTP, i są powolny.

Jeśli metoda FQL nie daje Ci tego, czego chcesz, wprowadź żądania API żądania partii - co zmniejsza liczbę żądań HTTP i dlatego powinno całkiem przyspieszyć.