J'ai créé une application et je souhaite maintenant publier un message sur le mur de l'un de mes amis en utilisant la nouvelle API Graph. Est-ce faisable?
J'utilise déjà oAuth et Graph-api pour obtenir la liste de tous mes amis. L'API sur http://developers.facebook.com/docs/api me dit de cURL https://graph.facebook.com/[userid]/feed pour lire le flux, mais cela me dit également comment poster un message:
curl -F 'access_token=[...]' -F 'message=Hello, Arjun. I like this new API.' https://graph.facebook.com/arjun/feed
Bien sûr, cela ne fonctionne pas! Et je ne peux pas savoir pourquoi ..
Voici mon code PHP:
require_once 'facebook.php'; // PHP-SDK downloaded from http://github.com/facebook/php-sdk
$facebook = new Facebook(array(appId=>123, secret=>'secret'));
$result = $facebook->api(
'/me/feed/',
array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
Ce code ne génère aucune erreur, et je sais que mon access_token est correct (sinon, je ne pourrais pas exécuter $ facebook-> api ('/ me? Access_token ='. $ This-> access_token); pour obtenir mon userobject.
Quelqu'un at-il posté avec succès un message en utilisant Graph-api? Alors i besoin votre aide! :-)
Ok, j'ai finalement résolu ça. Merci à phpfour pour votre aide :-)
Premièrement: Mon URL de connexion ressemble à ceci (avec "publish_stream"):
$connectUrl = $this->getUrl(
'www',
'login.php',
array_merge(array(
'api_key' => $this->getAppId(),
'cancel_url' => $this->getCurrentUrl(),
'req_perms' => 'publish_stream',
'display' => 'page',
'fbconnect' => 1,
'next' => $this->getCurrentUrl(),
'return_session' => 1,
'session_version' => 3,
'v' => '1.0',
), $params)
);
Seconde ; J'ai essayé de poster sur facebook via
$result = $facebook->api(
'/me/feed/',
array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
Mais la bonne façon de faire est d'inclure un paramètre supplémentaire ('post'):
$result = $facebook->api(
'/me/feed/',
'post',
array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
Vous aurez besoin de l'autorisation étendue "publish_stream" pour écrire dans le flux. En voici une liste complète: http://developers.facebook.com/docs/authentication/permissions .
Pour obtenir l'autorisation étendue, obtenez le jeton d'autorisation de la manière suivante:
https://graph.facebook.com/oauth/authorize?
client_id=...&
redirect_uri=http://www.example.com/callback&
scope=publish_stream
En plus de chf ,
Après avoir posté:
$getLinkToken='https://graph.facebook.com/oauth/access_token'.
'?client_id=YOUR_APPID'.
'&redirect_uri=YOUR_SITE'.
'&client_secret=YOUR_SECRET'.
'&code=CODE_KEY';
J'ai eu la réponse:
https://graph.facebook.com/oauth/access_token?
client_id=xxxxxxxxxxxxxx
&redirect_uri=myurl
&client_secret=xxxxxxxxxxxxxx
&code=xxxxxxxxxxxxxx
non lequel est access_token
, client_secret
ou code
$facebook->api( '/YOUR_APPID/feed/', 'post',
array('access_token' => $this->access_token,
'message' => 'Playing around with FB Graph..'));
Pour clarifier, "post" se réfère ici à la méthode HTTP, comme dans GET/POST. Voir https://github.com/facebook/php-sdk/blob/master/src/base_facebook.php : fonction protégée _graph ($ path, $ method = 'GET', $ params = array ())
$ result = $ facebook-> api ( '/me/feed/',[' post ', array (' access_token '=> $ this-> access_token,' message '=>' Jouer avec FB Graph .. ') );
Comme le lien le dit: entrez la description du lien ici
<?php
$app_id = "YOUR_APP_ID";
$app_secret = "YOUR_APP_SECRET";
$my_url = "YOUR_POST_LOGIN_URL";
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=email";
echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$access_token = file_get_contents($token_url);
$graph_url="https://graph.facebook.com/me/permissions?".$access_token;
echo "graph_url=" . $graph_url . "<br />";
$user_permissions = json_decode(file_get_contents($graph_url));
print_r($user_permissions);
?>
C’est une vieille façon d’avoir accès. Dans GRAPH, j'ai d'abord généré le code code avec:
$getLinkCode ='https://graph.facebook.com/oauth/authorize'.
'?client_id=YOUR_APPID'.
'&redirect_uri=YOUR_SITE'.
'&scope=publish_stream';
Et maintenant, lorsque nous avons code clé, nous pouvons générer access_token depuis le lien:
$getLinkToken='https://graph.facebook.com/oauth/access_token'.
'?client_id=YOUR_APPID'.
'&redirect_uri=YOUR_SITE'.
'&client_secret=YOUR_SECRET'.
'&code=CODE_KEY';
Mais cet access_token poster votre message en tant que USER pas APPLICATION ... POURQUOI?!
Si vous souhaitez publier sur le mur d'applications:
$facebook->api( '/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..'));
Au lieu d'utiliser le code ci-dessous
[facebook dialog:@"feed"
andParams:params
andDelegate:self];
Utilisez la solution suivante
[facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];