Question

Par exemple, voici une "page":

http://www.facebook.com/facebook

Cette page a une alimentation RSS (que j'aimerais utiliser, idéalement), mais a) son navigateur-sniffs signifie que j'ai besoin de simuler l'agent utilisateur d'un script pour le chercher - et qui se sent vraiment fragile B ) La qualité des données retournées est vraiment mauvaise.

Puis-je utiliser l'API graphique pour aller chercher les mêmes données? Cette URL:

https://graph.facebook.com/facebook/feed

implique que je peut et Json va bien pour moi, bien que je récupère cela à partir d'un script PHP plutôt que d'un côté client. Cependant, lorsque j'essaie cette URL pour ma page réelle, je reçois ce qui suit:

{
    "error": {
        "type": "OAuthAccessTokenException",
        "message": "An access token is required to request this resource."
    }
}

Je ne comprends pas pourquoi un jeton d'accès est requis pour ma page, tandis que d'autres pages sont «plus publiques» - est-ce une configuration sur la page quelque part? Sinon, quelle est la meilleure façon d'obtenir la clé d'accès - Notez que c'est pas un script interactif demandant au propriétaire de la page d'authentifier.

Était-ce utile?

La solution

Si j'essaie d'accéder à l'URL via CURL, cela fonctionne bien pour moi dans PHP.

$curlResponse = http('https://graph.facebook.com/facebook/feed');
$facebookFeed = json_decode($curlResponse['data'], true);

var_dump($facebookFeed);

Utilisation de cette fonction PHP:

function http($url) {
  $timeout = 30;
  $connectTimeout = 30;
  $sslVerifyPeer = false;

  $response = array();
  $ci       = curl_init();

  /* Curl settings */
  curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $connectTimeout);
  curl_setopt($ci, CURLOPT_TIMEOUT, $timeout);
  curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
  curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $sslVerifyPeer);    
  curl_setopt($ci, CURLOPT_URL, $url);

  $response['http_code'] = curl_getinfo($ci, CURLINFO_HTTP_CODE);
  $response['api_call']  = $url;
  $response['data']      = curl_exec($ci);

  curl_close ($ci);

  return $response;
}

Autres conseils

mise à jour: à partir du 3 juin 2011, une application valide ou un utilisateur Access_Token est requise avec toutes les demandes d'API.

Pour plus d'informations: http://developers.facebook.com/blog/post/509/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top