Fan Gate Facebook et API PHP - PHP - Programmation
MarshPosté le 14-05-2012 à 14:04:25
Bonjour à tous,
Je suis nouveau dans la communauté. Je vous présente mon problème après 48H de recherches et d'essais infructueux...et là j'avoue ne plus comprendre gran chose ni savoir où aller.
Je voudrais faire quelque chose de très simple dans la théorie : Une page Facebook dont le contenu change en fonction de si on est fan ou pas (il s'agira en pratique d'un jeu avec tirage au sort des gagnants et pour s'y inscrire il faut être fan d'abord). 1er cas : l'utilisateur n'est pas fan...dans ce cas je l'incite à le devenir pour acceder à la suite du contenu 2nd cas : l'utilisateur est devenu fan de la page et il a accès à un formulaire PHP/HTML standard ensuite
Ce que j'ai réussi à mettre en place :
- J'ai un site Internet externe qui heberge la dernière version du kit API PHP/Facebook (facebook / php-sdk github) dans un répertoire dédié à cette application : http://monsite.com/jeufbk/ - Dans ce répertoire sur le site Internet, j'ai une page index.php qui contient ça :
- Lorsqu'en étant connecté sous un compte FBK qui n'a rien à voir avec celui de l'application créée, je fais appelle à la page facebook de l'application (http://apps.facebook.com/nomdemonappli), je ne récupère pas les données utilisateur et en particulier la seule qui m'intéresse, ['page']['liked']...qui me permet de savoir si la personne a "liké" la page en question.
page id = page admin = like status = country = fr locale = fr_FRContenu public...
En gros, l'info qui m'intéresse n'est pas remplie....et je ne comprends pas pourquoi.
J'ai eu des galères de niveau de PHP...je tourne en PHP 5.2 maintenant qui semble compatible avec ce fonctionnement. En lisant beaucoup de récits d'expériences similaires, j'ai compris que ce genre de problème venait de l'URL saisie dans "URL du canevas" et dans " Page Tab URL"...mais moi j'ai dans les 2 champs "http://monsite.com/jeufbk/" et c'est la bonne URL.
J'ai même sorti un sniffer réseau pour voir ce qu'il se passe lorsque mon navigateur fait la requête HTTP http://apps.facebook.com/nomdemonappli ou http://monsite.com/jeufbk/ et je reçois bien une réponse 200 OK...il n'y a pas de redirection par exemple qui pourrait expliquer un problème de ce type.
Avez-vous une piste à me suggérer? Je n'ai plus vraiment d'idée.
Marsh Posté le 14-05-2012 à 14:04:25
Bonjour à tous,
Je suis nouveau dans la communauté.
Je vous présente mon problème après 48H de recherches et d'essais infructueux...et là j'avoue ne plus comprendre gran chose ni savoir où aller.
Je voudrais faire quelque chose de très simple dans la théorie :
Une page Facebook dont le contenu change en fonction de si on est fan ou pas (il s'agira en pratique d'un jeu avec tirage au sort des gagnants et pour s'y inscrire il faut être fan d'abord).
1er cas : l'utilisateur n'est pas fan...dans ce cas je l'incite à le devenir pour acceder à la suite du contenu
2nd cas : l'utilisateur est devenu fan de la page et il a accès à un formulaire PHP/HTML standard ensuite
Ce que j'ai réussi à mettre en place :
- J'ai un site Internet externe qui heberge la dernière version du kit API PHP/Facebook (facebook / php-sdk github) dans un répertoire dédié à cette application : http://monsite.com/jeufbk/
- Dans ce répertoire sur le site Internet, j'ai une page index.php qui contient ça :
<?
require ('./src/facebook.php');
$facebook = new Facebook(array(
'appId' => 'mon _appid',
'secret' => 'mon_secret',
'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
$liked = $signed_request['page']['liked'];
//DEBUG
print_r($facebook);
echo "<BR><BR>\n\n";
$page_id = $signed_request["page"]["id"];
$page_admin = $signed_request["page"]["admin"];
$like_status = $signed_request["page"]["liked"];
$country = $signed_request["user"]["country"];
$locale = $signed_request["user"]["locale"];
echo "<br>page id = $page_id";
echo "<br>page admin = $page_admin";
echo "<br>like status = $like_status";
echo "<br>country = $country";
echo "<br>locale = $locale";
//FIN DEBUG
if($liked)
{
echo "Contenu reserve aux fans...\n";
}
else
{
echo "Contenu public...\n";
}
?>
<BR>
<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fapps.facebook.com%2FMONAPPLI&send=false&layout=button_count&width=450&show_faces=true&action=like&colorscheme=light&font&height=21&appId=MONAPPID" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:21px;" allowTransparency="true"></iframe>
<BR>
- Au préalable j'avais créé une application via le site de developpement Facebook avec les paramètres suivants :
URL du canevas : http://monsite.com/jeufbk/
Page Tab URL : http://monsite.com/jeufbk/
- Lorsqu'en étant connecté sous un compte FBK qui n'a rien à voir avec celui de l'application créée, je fais appelle à la page facebook de l'application (http://apps.facebook.com/nomdemonappli), je ne récupère pas les données utilisateur et en particulier la seule qui m'intéresse, ['page']['liked']...qui me permet de savoir si la personne a "liké" la page en question.
Je reçois cette page :
Facebook Object ( [appId:protected] => MONAPPID [appSecret:protected] => MONSECRET [user:protected] => [signedRequest:protected] => Array ( [algorithm] => HMAC-SHA256 [issued_at] => 1336994386 [user] => Array ( [country] => fr [locale] => fr_FR [age] => Array ( [min] => 21 ) ) ) [state:protected] => [accessToken:protected] => [fileUploadSupport:protected] => )
page id =
page admin =
like status =
country = fr
locale = fr_FRContenu public...
En gros, l'info qui m'intéresse n'est pas remplie....et je ne comprends pas pourquoi.
J'ai eu des galères de niveau de PHP...je tourne en PHP 5.2 maintenant qui semble compatible avec ce fonctionnement.
En lisant beaucoup de récits d'expériences similaires, j'ai compris que ce genre de problème venait de l'URL saisie dans "URL du canevas" et dans " Page Tab URL"...mais moi j'ai dans les 2 champs "http://monsite.com/jeufbk/" et c'est la bonne URL.
J'ai même sorti un sniffer réseau pour voir ce qu'il se passe lorsque mon navigateur fait la requête HTTP http://apps.facebook.com/nomdemonappli ou http://monsite.com/jeufbk/ et je reçois bien une réponse 200 OK...il n'y a pas de redirection par exemple qui pourrait expliquer un problème de ce type.
Avez-vous une piste à me suggérer? Je n'ai plus vraiment d'idée.