The reply from @Felipeavelar is correct, it was not included the attending
at the end of the query.
Anyway, I’ve prepared an example with based on my other answer. There is important additional information (which I will deliberately avoid repeating here) on how to create your Facebook application and how to simulate the page locally.
The HTML and Javascript files below illustrate a solution to count (and list) users who have indicated participation in a public event (or your profile, since you have the access token). To illustrate, I used the event of Sbgames 2014.
HTML file
<html>
<head>
<title>Teste de Participantes</title>
<script type="text/javascript" src="facebook.js"></script>
</head>
<body>
<!--
Inicialização assíncrona da biblioteca javascript para o Facebook
(conforme documentação: https://developers.facebook.com/docs/javascript/quickstart),
com login automático e obtenção do token de acesso.
-->
<div id="fb-root"></div>
<script>
/** Armazena o token de acesso */
var gsAccessToken = "";
/**
* Função de inicialização e login no Facebook.
* NOTA: Essa função é apenas necessária para acesso a recursos com privacidade controlada
* (que requer o uso do token de acesso).
* Para ESTE teste (com o evento público), essa função pode ser simplesmente
* comentada (ou removida) que a consulta funciona da mesma forma.
*/
window.fbAsyncInit = function() {
// Inicio da biblioteca do FB (com definição do ID da página Web)
FB.init({
appId : '1401642456751870', // ID da página Web criada no App Center
status : true,
xfbml : true
});
// Requisição ao usuário do login no FB
FB.login(function(oResponse) {
if(oResponse.authResponse) {
gsAccessToken = FB.getAuthResponse()['accessToken'];
console.log('Token de acesso = '+ gsAccessToken);
FB.api('/me', function(oResponse) {
console.log('Bem-vindo, ' + oResponse.name + '!');
});
}
else
console.log('O usuário cancelou o login ou não autorizou completamente.');
}, {scope: ''});
};
// FIM DA FUNÇÃO DE INICIALIZAÇÃO E LOGIN (que pode ser comentada se desejado)
/*
* Carregamento assíncrono do arquivo js com a api do FB
* (note o uso de 'pt_BR' na URL, para janelas de login/permissão localizadas).
*/
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/pt_BR/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<!-- Função de callback para exibição do total de likes. -->
<script>
function displayParticipants(iParticipants) {
alert("Participantes no Evento: " + iParticipants);
}
</script>
<!--
Testa com o evento do SBGames 2014:
https://www.facebook.com/events/648697541847684/
O ID é facilmente obtido da própria URL acima.
-->
<button onclick="queryParticipants('648697541847684', displayParticipants);">Consulta Participantes do SBGames 2014</button>
</body>
</html>
Javascript file
/**
* Função de consulta dos participantes de um evento do Facebook.
* @param sResourceID Identificador do Facebook para o evento.
* @param oCallback Função de callback com a assinatura function(iParticipants) a ser chamada com o resultado
* da consulta.
*/
function queryParticipants(sResourceID, oCallback) {
var oCounter = { participants: 0 };
// Consulta o número de participantes do evento
FB.api("/" + sResourceID + "/attending",
function(oResponse) {
console.log(oResponse);
outputParticipants(oResponse.data);
queryResponse(oCounter, oResponse.data.length, oResponse.paging.next, oCallback);
}
);
}
/**
* Função recursiva para contagem acumulada dos participoantes em múltiplas páginas.
* @param oCounter Objeto para manter a contagem dos participantes entre as chamadas.
* @param iParticipants Número de participantes da atualização da paginação atual recebida do Facebook.
* @param sNext String com o link para a próxima paginação ou null se não existir mais paginações.
* @param oCallback Função de callback com a assinatura function(iParticipants) a ser chamada com o resultado
* da consulta.
*/
function queryResponse(oCounter, iParticipants, sNext, oCallback) {
oCounter.participants += iParticipants;
if(sNext != null) {
FB.api(sNext,
function(oResponse) {
outputParticipants(oResponse.data);
queryResponse(oCounter, oResponse.data.length, oResponse.paging.next, oCallback);
}
);
}
else
oCallback(oCounter.participants);
}
/**
* Função utilitária para 'imprimir' no console os nomes (e IDs) dos participantes do evento.
* @param aData Array com os objetos de usuários que indicaram participação no evento.
*/
function outputParticipants(aData) {
for(var i = 0; i < aData.length; ++i) {
var oUser = aData[i];
console.log(oUser.name + "(" + oUser.id + ")");
}
}
Upshot
Excellent Felipe, did not know that this statistical information had been separated as it works today with the cover of the event. Thank you.
– LeandroLuk