56 votes

Accès hors ligne à Facebook, étape par étape

UPDATE : Facebook offline_access est dépréciée. Veuillez vous référer à la documentation officielle pour plus d'informations.
Vous aurez jusqu'à 1er mai 2012 date à laquelle ce paramètre sera désactivé. Feuille de route pour les développeurs pour plus d'informations.


Après avoir cherché littéralement pendant un jour sur facebook et google pour une mise à jour et un travail manière de faire quelque chose d'apparemment simple :

Je cherche une explication étape par étape pour obtenir l'accès hors ligne d'un utilisateur pour une application facebook et ensuite utiliser cette clé de session pour récupérer les données d'amis et de profil hors ligne et non dans un navigateur.

Il est préférable de le faire dans l'API Java de Fb.

Merci.

Et oui, j'ai vérifié le wiki de Facebook.

Mise à jour : Quelqu'un ?

ceci : http://www.facebook.com/authorize.php?api_key=<api-key>&v=1.0&ext_perm=offline_access me donne offline_Access, mais comment récupérer la session_key ?

Pourquoi facebook ne peut pas faire une simple documentation, je veux dire qu'il y a 600 personnes qui travaillent là-bas ?

La même question, apparemment : Faire fonctionner l'accès hors ligne avec Facebook Ne répond pas à la question de savoir comment récupérer la clé de session.

Edit : Je suis toujours coincé avec ça. Je suppose que personne n'a encore essayé un tel accès par lot...

2voto

Naren Points 61

Bonjour
J'ai trouvé comment "récupérer" la clé de session infinie de l'accès hors ligne après beaucoup d'efforts, d'essais et d'erreurs, et après m'être interrogé sur toutes les autres façons productives dont j'aurais pu utiliser ce temps... Je suis d'accord pour dire que la documentation de Facebook pourrait être bien meilleure...

1) Si vous utilisez l'interface facebook-java-api, consultez le site de démonstration facebook pour le "web mobile" afin de savoir comment formater l'URL pour demander un accès hors ligne.
http://itsti.me/index.php

<a href="http://www.facebook.com/connect/prompt_permissions.php?api_key=YOUR_API_KEY&ext_perm=publish_stream%2Coffline_access&next=http%3A%2F%2Fmysite%2Ffacebookconnect&cancel=http%3A%2F%2Fmysite%2Fhome&display=wap"><img alt="Connect" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_light_medium_long.gif" id="fb_login_image"/></a>

2) Pour ce qui est de la façon d'obtenir la clé de session hors ligne à partir de la session, l'astuce est la suivante : lorsque facebook redirige l'utilisateur vers l'url "suivante" juste après avoir accordé l'accès hors ligne, vous devriez obtenir la session facebook "à nouveau", cette nouvelle session aura la clé de session infinie.
Le auth_token est utilisé uniquement pour les sites Web mobiles... vous n'en aurez peut-être pas besoin pour un site Web ordinaire...

FacebookJsonRestClient fbc = new FacebookJsonRestClient(MY_API_KEY, SECRET, sessionKey);
String auth_token = request.getParameter("auth_token");
System.out.println("infinite session kEY = " +   fbc.auth_getSession(auth_token));

0voto

Capt.Nemo Points 553

Pour l'accès à la session, j'ai dû utiliser le loginurl fourni par l'api php de facebook, car il semble y avoir 2/3 variables supplémentaires qu'il envoie dans la requête d'authentification, y compris return_session et session_version. De plus, le nouveau php5-sdk envoie la requête à login.facebook.com au lieu de https://graph.facebook.com/oauth/authorize . Voici comment je me suis débrouillé :

$b=new facebook(array('appId'=>APP_ID,'secret'=>SECRET))

Demander l'authentification :

$facebook->getLoginUrl(array('next'=>$redirect_uri,'req_perms'=>$scope))

N'oubliez pas d'inclure offline_access dans $scope. Une fois que vous êtes redirigé vers cette page (après vous être connecté à fb, et avoir accordé les permissions), vous aurez un $_GET['session'] au format json.

Il suffit de le stocker où vous voulez (je le fais dans une base de données). La prochaine fois que vous souhaitez faire quelque chose avec le compte de l'utilisateur, utilisez simplement ce qui suit :

$session = json_decode($db->query("SELECT ..."));//get session from db $this->facebook->setSession($session);

Après cela, toutes les requêtes de l'API se feront via l'accès de cet utilisateur.

Le pire dans l'api facebook graph actuelle est (corrigez-moi si je me trompe) que l'api actuelle néglige la session (qui semble être un reste de l'ancienne api) dans toute sa documentation et ne parle que de l'access_token. Mais l'api actuelle (php5-sdk) n'a pas de fonction pour envoyer une requête réelle en utilisant seulement l'access_token. S'il existe une fonction pour démarrer une session en utilisant uniquement l'access_token, je n'en ai pas connaissance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X