35 votes

Pouvez-vous obtenir le flux d'une page Facebook publique à l'aide de l'API Graph sans demander à un utilisateur de l'autoriser?

Je n'ai jamais utilisé Facebook de l'API Graphique, ou OAuth. Je suis tout simplement essayer d'obtenir un public Facebook de la page de flux à l'aide de l'API Graphique, mais il nécessite un jeton d'accès. Je ne veux pas de tracas login des utilisateurs et de permettre l'accès pour obtenir leur jeton. Un Facebook app jeton d'accès peut être utilisée pour obtenir un public d'alimentation, mais je suis en train de le faire entièrement en Javascript, donc je ne peux pas utiliser l'application secret pour le faire. J'ai lu quelque part qu'un Facebook app jeton d'accès ne jamais expirer ou changement, à moins que je réinitialiser manuellement le secret. Est-ce vrai? Est-il juste de coder en dur dans le Jeton d'Accès? Si non, est-il une manière que je pourrais authentifier une appli pour récupérer le jeton sans avoir à impliquer l'utilisateur? Est-il un type de générique app jeton je pourrais utiliser?

78voto

McNab Points 4816

Si vous êtes comme moi, vos clients n'est pas la norme Facebook likebox plugin, ils veulent tout de style et personnaliser leur propre chemin.

Vous n'avez pas besoin de passer toute la journée à tourner autour de la documentation officielle se demandant si tout cela s'applique à vous pour quelque chose de simple comme ça, c'est assez facile. La confusion vient du fait que vous pourriez supposer que, avec toutes ces clés et secret id vous devez obtenir la permission ou l'authentification de l'Facebook page vous vouliez tirer l'alimentation de - vous ne le faites pas. Tous vous avez besoin est valide app et vous pouvez obtenir le flux de la page.

Définissez votre application dans Facebook et il vous donnera un id d'application et d'une clé API. Obtenir l'id de profil pour la page publique d'alimentation que vous voulez, et c'est tout ce dont vous avez besoin. Vous pouvez alors utiliser le code suivant pour récupérer le jeton d'authentification, puis ensuite l'utiliser pour retourner le flux de données comme un objet JSON.

<?php

function fetchUrl($url){

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_TIMEOUT, 20);
 // You may need to add the line below
 // curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

 $feedData = curl_exec($ch);
 curl_close($ch); 

 return $feedData;

}

$profile_id = "the_profile_id_of_the_page_you_want";

//App Info, needed for Auth
$app_id = "your_app_id_in_here";
$app_secret = "your_app_secret_in_here";

//Retrieve auth token
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");

$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/feed?{$authToken}");

Grâce à une modification quelqu'un a suggéré que je pense de ce code est entré à partir d' ici (semble familier de toute façon :) ) et il y a un peu plus d'info dans les commentaires, il pourrait aider.

Vous pouvez alors analyser l'objet, voici un peu de code pour le faire en PHP basé sur ce fil;

De la manipulation de données en PHP Objet JSON

$feedarray = json_decode($json_object);

foreach ( $feedarray->data as $feed_data )
{
    echo "<h2>{$feed_data->name}</h2><br />";
    echo "{$feed_data->message}<br /><br />";
}

Pour savoir ce qui est disponible pour vous dans l'objet json, vous pouvez la sortie de l'url dans un navigateur et copier/coller dans ce utile json visualisation de l'outil;

http://chris.photobooks.com/json/default.htm

6voto

phwd Points 12493

Facebook app jeton d'accès ne jamais expirer ou changement, à moins que je réinitialiser manuellement le secret

C'est correct.

Application des jetons de ne pas de date d'expiration, à moins que le Secret de l'App est réinitialisé. Application des jetons d'accès sont uniques à chaque application.

Depuis les flux publics de prendre toute jeton d'accès valide, l'application jetons peuvent être utilisés.

Aller à https://developers.facebook.com/tools/access_token et vous n'auriez pas besoin d'un flux. Ensuite, vous pouvez simplement le code dans. Le moment que vous réinitialisez le secret de cette méthode est nulle.

$access_token = '1111111111|2Cha_1-n5'
$graph_url = "https://graph.facebook.com/Boo/posts?access_token=" 
    . $access_token;
$page_posts = json_decode(file_get_contents($graph_url), true);

Puis itérer sur les pages

foreach($page_posts['data'] as $post){
    $post_link = $post['actions'][0]['link'];
    $page_id = $post['from']['id'];
    $page_name = $post['from']['name'];
    $message = ($post['message']) ? $post['message'] : " ";
    $name = ($post['name']) ? $post['name'] : " ";
    $story = ($post['story']) ? $post['story'] : " ";
    $post_time = $post['updated_time'];
}

Source: http://philippeharewood.com/facebook/how-to-get-facebook-access-tokens-in-php-for-public-posts-the-basic-sauce/

1voto

Diego Palomar Points 1253

En réponse au message de @Psyked et @James_David_Low, il est recommandé de ne pas utiliser FQL, car il est obsolète.

"...Il y a deux bas-niveau de l'Api HTTP, qui sont également utilisés à Facebook pour accéder au graphique: FQL et l'Héritage de l'API REST. Ces Api contiennent les mêmes et le chevauchement des fonctionnalités, mais sont déconseillés."

De nouvelles fonctionnalités sont généralement disponibles dans l' API Graphique. Pour l'avenir de votre application, vous devriez être en utilisant l'API Graphique de votre application si vous le pouvez.

0voto

Henrik Peinar Points 1020

Si vous souhaitez utiliser le flux de page (comme votre propre flux de page) dans une application pour le montrer aux autres. Utilisez simplement votre propre access_token pour l'obtenir.
MAIS! comme cela n'est pas considéré comme une bonne pratique, vous pouvez également vous connecter avec la page ou l'application et utiliser leur access_token.

Pour plus d'informations, veuillez lire la documentation officielle sur l'authentification

0voto

James David Low Points 11

Je pense que pour ce faire, vous devez utiliser FQL et pas simplement l'API Graph. C'est ce que je fais (remplacez PAGE_ID par l'ID de votre page, gardez les guillemets):

 SELECT post_id, created_time, type, message, attachment 
FROM stream 
WHERE source_id = 'PAGE_ID' 
AND actor_id = source_id
 

https://developers.facebook.com/docs/reference/fql/stream/

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