2010-01-11 5 views
2

Je souhaite afficher mon flux de fanpage public sur mon site Web via l'API Facebook sans nécessiter de connexion.Comment obtenir le flux d'une page Facebook publique en php?

Je fais ce

require_once('../includes/classes/facebook-platform/php/facebook.php'); 

$fb = new Facebook($api_key, $secret); 
$fb->api_client->stream_get('',$app_id,'0','0','','','','','')); 

mais je reçois cette erreur

Fatal error: Uncaught exception 'FacebookRestClientException' with message 'user id parameter or session key required' in includes/classes/facebook-platform/php/facebookapi_php5_restlib.php:3065 
Stack trace: 
#0 includes/classes/facebook-platform/php/facebookapi_php5_restlib.php(1915): FacebookRestClient->call_method('facebook.stream...', Array) 
#1 facebook/api.php(12): FacebookRestClient->stream_get('', 13156929019, '0', '0', 30, '', '', '', '') 
#2 {main} 
    thrown in includes/classes/facebook-platform/php/facebookapi_php5_restlib.php on line 3065 

Puis je me suis dit, à cause de « paramètre ID utilisateur ou clé de session requise », d'ajouter mon nom d'utilisateur à l'appel

require_once('../includes/classes/facebook-platform/php/facebook.php'); 

$fb = new Facebook($api_key, $secret); 
$fb->api_client->stream_get(502945616,13156929019,$app_id,'0','0','','','','','')); 

Mais j'eu cette erreur

Fatal error: Uncaught exception 'FacebookRestClientException' with message 'Session key invalid or no longer valid' 

Je suis totalement désemparés :)

Répondre

3

Voici ce que je l'ai fait

1) Connectez-vous à Facebook.

2) accorder l'accès à votre application hors ligne sur votre compte: http://m.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=offline_access

3) Ajouter une autorisation de lecture de flux http://m.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=read_stream

4) Générer un code clé http://www.facebook.com/code_gen.php?v=1.0&api_key=YOUR_API_KEY

5) Exécutez ce script une fois et copiez le "session_key".

$facebook = new Facebook($api_key, $api_secret); 
$infinite_key = $facebook->api_client->auth_getSession(YOUR_KEY_CODE); 
print_r($infinite_key); 

6) Plug and play!

$facebook->api_client->user = YOUR_FACEBOOK_USER_ID 
$facebook->api_client->session_key = YOUR_INFINITE_KEY 
$facebook->api_client->expires = 0; 
$feed = $facebook->api_client->stream_get(YOUR_FACEBOOK_USER_ID, FAN_PAGE_ID); 

Alors bascially, cela va saisir l'alimentation de votre « point de vue », mais seulement filtrer pour afficher les éléments de la page Fan spécifiée. Clause de non-responsabilité: Cela fonctionne, mais je ne suis pas sûr qu'il s'agisse d'une méthode "prise en charge" pour saisir des données ou même autorisée.

Références:

http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/

http://blog.jylin.com/2009/10/01/loading-wall-posts-using-facebookstream_get/

+0

Impressionnant! Merci beaucoup! – Bundy

+0

Après avoir généré mon code, j'obtiens ce message: Succès! Votre code à usage unique est XXXXXX Pour vous connecter de manière permanente à APP_NAME, vous devez fournir ce code à l'application. Comment puis-je fournir ceci à l'application? Parce que maintenant, chaque fois que je fais un appel api, je dois régénérer ce code. J'ai essayé ceci quelques fois et maintenant j'obtiens cette erreur: Exception non interceptée 'FacebookRestClientException' avec le message 'Paramètre invalide' – Bundy

+0

Après avoir généré le keycdode (étape 4) vous utilisez ce code à l'étape 5 pour générer un tableau qui a une session infinie clé, cela, vous aurez seulement à faire une fois. Vous utilisez ensuite la clé de session infinie à l'étape 6 (où il est indiqué YOUR_INFINITE_KEY), c'est ainsi que vous l'avez fournie à l'application, l'avez-vous fait? – Daniel

0

Ok, j'ai essayé plusieurs fois, mais il a travaillé quand j'ai ajouté CITATIONS au code.

$infinite_key = $facebook->api_client->auth_getSession('YOUR_KEY_CODE'); 

Merci pour la suggestion!

0

Vous avez besoin de la bibliothèque Facebook dans votre code et il est préférable de dire APP_ID pas API_KEY.

<?php 
require_once('facebook.php'); 
$facebook = new Facebook('YOUR_APP_ID', 'YOUR_APP_SECRET'); 
$infinite_key = $facebook->api_client->auth_getSession('YOUR_KEY_CODE'); 
print_r($infinite_key); 
?> 
Questions connexes