Beste,

Ik ben aan het proberen om de images van de facebook-users te laden die fan zijn van mijn eigen pagina. Ik weet dat hier een social-plugin van Facebook zelf voor is, maar die biedt weinig vrijheid.

Ik probeer om met FQL een query op te zetten waarin alle users worden opgehaald die mijn facebook page "liken". Echter is page_id geen index in deze tabel, maar alleen de user-id (uid).

De gebruikers hoeven niet in te loggen om de plaatjes te zien.


Op dit moment gebruik ik deze query:

SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM page_fan WHERE page_id = 000000000000)


Maar omdat page_fan geen index op page_id heeft krijg ik een error.

Iemand hier ervaring mee of een mogelijke oplossing?
Welke error krijg je?
Dat page_id geen index is en dat ik in de WHERE clausule een indexeerbare parameter moet gebruiken.
Theoretisch gezien is het dan niet mogelijk met FQL. Je kan niet van de tabel page naar page_fan komen. Je hebt geen JOIN's, geen GROUP BY's en HAVINGS. Uiteindelijk moet page_id van de 'page_fan' tabel toch in de WHERE komen.

Edit: Google op 'fql get page_fans from page': http://stackoverflow.com/questions/3560574/get-facebook-page-fans
Ah dat leek te werken met een group-id. Echter zodra ik mijn page-id invoer krijg ik deze error:


file_get_contents(https://graph.facebook.com/183864994984196/members?limit=500&access_token=190883070943691|TRywDhcWIinJtcpRlXBsipmfoMM) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request


gebruikte code:


<?php
require_once 'facebook.php';

	// Create our Application instance.
	$facebook = new Facebook(array(
  		'appId' => '----',
  		'secret' => '----',
  		'cookie' => true,
	));
	
	try {
  		$me = $facebook->api('/me');
	} catch (FacebookApiException $e) {
  		error_log($e);
	}
	
	$accessToken = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id=190883070943691&client_secret=b169d4869cd49daefd4e8e6a97e6d2cc&grant_type=client_credentials');
	
	echo $accessToken;
	$results	=	file_get_contents('https://graph.facebook.com/183864994984196/members?limit=500&'.$accessToken);
	
	echo '<pre>';
	print_r($results);
	echo '</pre>';
?>



edit:
Ik heb ervoor gekozen om het uit de groep te laden. Als volgt:


<?php

	// Awesome Facebook Application
	//
	// Name: workshopaholics
	//

	require_once 'facebook.php';

	// Create our Application instance.
	$facebook = new Facebook(array(
  		'appId' => '----',
  		'secret' => '----',
  		'cookie' => true,
	));
	
	try {
  		$me = $facebook->api('/me');
	} catch (FacebookApiException $e) {
  		error_log($e);
	}
	
	$result = $facebook->api(array(  
    	'method' => 'fql.query',  
    	'query' => 'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM group_member WHERE gid = 138399492887607)'
	));  
	
	echo '<pre>';
	print_r($result); 
	echo '</pre>';
	
	foreach($result as $user => $value)
		{
			echo '<img src="'.$value['pic_square'].'" alt="" />';
		}
	
?>
Heel mooi. Wellicht handig om de appId en je 'secret' token weg te halen?
haha thanks, had er niet op gelet. Ben trouwens toch weer aan de slag met die page.. Kan het niet verkroppen dat het niet kan
Facebook heeft het afgeschermd omdat het niet geindexeerd is en daarom het systeem te veel kan belasten. Zou wel mooi zijn als je een manier kan vinden om er omheen te werken, maar verwacht er niet te veel van.
Het is me gelukt als ik 'm op een group gooi. Kennelijk zijn pages een vorm van groepen.


<?php

	// Awesome Facebook Application
	//
	// Name: workshopaholics
	//

	require_once 'facebook.php';

	// Create our Application instance.
	$facebook = new Facebook(array(
  		'appId' => '---',
  		'secret' => '---',
  		'cookie' => true,
	));
	
	try {
  		$me = $facebook->api('/me');
	} catch (FacebookApiException $e) {
  		error_log($e);
	}
	
	$result = $facebook->api(array(  
    	'method' => 'fql.query',  
    	'query' => 'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM group_member WHERE gid = 197681136917749)'
	));  
	
	echo '<pre>';
	print_r($result); 
	echo '</pre>';
	
	foreach($result as $user => $value)
		{
			echo '<img src="'.$value['pic_square'].'" alt="" />';
		}
	
?>

Reageren