webentwicklung-frage-antwort-db.com.de

So verwenden Sie FB Graph zum Veröffentlichen einer Nachricht in einem Feed (Wand)

Ich habe eine App erstellt, und jetzt möchte ich mithilfe der neuen Graph-API eine Nachricht auf einer meiner Freunde-Pinnwand posten. Ist das machbar?

Ich verwende bereits oAuth und das Graph-api, um eine Liste aller meiner Freunde zu erhalten. Die API unter http://developers.facebook.com/docs/api sagt mir zu cURL https://graph.facebook.com/[userid yes/feed um den Feed zu lesen, aber er sagt mir auch, wie ich eine Nachricht posten sollte:

curl -F 'access_token=[...]' -F 'message=Hello, Arjun. I like this new API.' https://graph.facebook.com/arjun/feed

Natürlich funktioniert das nicht! Und ich kann nicht herausfinden warum ..

Hier mein PHP-Code:

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..')
);

Dieser Code gibt keinen Fehler aus und ich weiß, dass access_token korrekt ist (andernfalls könnte ich $ facebook-> api ('/ me? Access_token ='. $ This-> access_token) nicht ausführen, um mein Benutzerobjekt zu erhalten.

Hat jemand da draußen eine Nachricht geschrieben, die Graph-api verwendet? Dann brauche ich brauche deine Hilfe! :-) 

12
qualbeen

Okay, ich habe das endlich gelöst. Danke an phpfour für eure Hilfe :-)

Erstens: Meine Verbindungs-URL sieht folgendermaßen aus (mit "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)
);

Zweite ; Ich habe versucht über Facebook auf Facebook zu posten 

$result = $facebook->api(
    '/me/feed/',
    array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);

Der richtige Weg, dies zu tun, besteht darin, einen weiteren Parameter ('post') anzugeben:

$result = $facebook->api(
    '/me/feed/',
    'post',
    array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')
);
18
qualbeen

Sie benötigen die erweiterte Berechtigung "publish_stream", um in den Feed schreiben zu können. Hier ist eine vollständige Liste von ihnen: http://developers.facebook.com/docs/authentication/permissions .

Um die erweiterte Berechtigung zu erhalten, fordern Sie das Autorisierungstoken folgendermaßen an:

https://graph.facebook.com/oauth/authorize?
client_id=...&
redirect_uri=http://www.example.com/callback&
scope=publish_stream

Zusätzlich zu chf ,

Nach dem Posting:

$getLinkToken='https://graph.facebook.com/oauth/access_token'.
              '?client_id=YOUR_APPID'.
              '&redirect_uri=YOUR_SITE'.
              '&client_secret=YOUR_SECRET'.
              '&code=CODE_KEY';

Ich habe die Antwort erhalten:

 https://graph.facebook.com/oauth/access_token?
    client_id=xxxxxxxxxxxxxx
    &redirect_uri=myurl
    &client_secret=xxxxxxxxxxxxxx
    &code=xxxxxxxxxxxxxx

nein welcher ist access_token, client_secret oder code 

$facebook->api( '/YOUR_APPID/feed/', 'post', 
array('access_token' => $this->access_token,
'message' => 'Playing around with FB Graph..'));
1
Saboor

Zur Verdeutlichung bezieht sich "post" hier auf die HTTP-Methode, wie in GET/POST. Siehe https://github.com/facebook/php-sdk/blob/master/src/base_facebook.php : geschützte Funktion _graph ($ path, $ method = 'GET', $ params = array ())

$ result = $ facebook-> api ( '/me/feed/' , 'post', array ('access_token' => $ this-> access_token, ' message '=>' Herumspielen mit FB Graph .. ') );

1
edibleEnergy

Wie der Link sagt: Linkbeschreibung hier eingeben

<?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 . "&amp;redirect_uri=" . urlencode($my_url) . "&amp;scope=email";
    echo("<script>top.location.href='" . $dialog_url . "'</script>");
  }
  $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
    . $app_id . "&amp;redirect_uri=" . urlencode($my_url)
    . "&amp;client_secret=" . $app_secret
    . "&amp;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);
?>
1
Konstantinos

Das ist ein alter Weg, um Zugang zu erhalten. In GRAPH habe ich zuerst code key erzeugt mit:

$getLinkCode ='https://graph.facebook.com/oauth/authorize'.
              '?client_id=YOUR_APPID'.
              '&redirect_uri=YOUR_SITE'.
              '&scope=publish_stream';

Und jetzt, wenn wir code key haben, können wir access_token from link erzeugen:

$getLinkToken='https://graph.facebook.com/oauth/access_token'.
              '?client_id=YOUR_APPID'.
              '&redirect_uri=YOUR_SITE'.
              '&client_secret=YOUR_SECRET'.
              '&code=CODE_KEY';

Aber dieses access_token postet Ihre Nachricht als USER nicht APPLICATION ... WARUM ?!

Wenn Sie einen Beitrag auf der Anwendungswand veröffentlichen möchten:

$facebook->api( '/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..'));
0
chf

Verwenden Sie statt den folgenden Code

[facebook dialog:@"feed"
 andParams:params 
 andDelegate:self]; 

Verwenden Sie die folgende Lösung

[facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];
0
codercat