2010-12-22 13 views
2

Ich habe keine Funktion, um einen Link zu einer Facebook-Wand zu posten. Dies funktioniert wie es sollte, nur das Bild, das ich anschließe, erscheint nicht auf der Seite.Ein Bild an eine Facebook-Wand senden

Muss ich etwas Besonderes machen, um ein Bild zu veröffentlichen?

public function shareAction() 
{ 
    include_once('/application/modules/social/services/facebook/facebook.php'); 

    $request = $this->getRequest(); 
    $this->_helper->getHelper('viewRenderer')->setNoRender(); 
    $this->_helper->getHelper('layout')->disableLayout(); 

    $return = 'ERROR'; 

    if($request->isPost()) { 
     $file = TOMATO_APP_DIR . DS . 'modules' . DS . 'social' . DS . 'config' . DS . 'config.ini'; 
    $config = new Zend_Config_Ini($file); 
    $config = $config->toArray(); 

     // Create our Application instance (replace this with your appId and secret). 
     $facebook = new Facebook(array(
      'appId' => $config['facebook']['appId'], 
      'secret' => $config['facebook']['secret'], 
      'cookie' => true, 
     )); 

     $options = Array(
      'access_token' => $config['facebook']['pageAccessToken'], 
      'link' => $request->getPost('link'), 
      'picture' => '@' . $request->getPost('picture'), 
      'name' => $request->getPost('name'), 
      'caption' => $request->getPost('caption'), 
      'description' => $request->getPost('description'), 
     ); 
     //Zend_Debug::dump($options); die(); 
     $wallPost = $facebook->api('/me/feed', 'post', $options); 

     $return = 'SUCCESS'; 
    } 

    echo $return; 
} 

Alles funktioniert wie erwartet außer dem Bild. Irgendeine Idee warum bitte?

+0

Warum haben Sie ein @ vor der Bild-URL? Der Parameter options picture sollte nur eine einfache Bild-URL sein, nein @ davor. –

+0

Nein, ich weiß ... aber es war ein Test, den ich online fand :-) – koko

+0

Wie http://developers.facebook.com/docs/reference/api/post/ states, muss der 'image' Parameter enthalten" ein Link zu dem Bild, das in diesem Post enthalten ist ", also etwas wie http://www.example.com/article-thumbnail.jpg. Was bieten Sie an? – akond

Antwort

2

Wie Brent und Akond erwähnt, sollte der Bildlink nicht mit '@' vorangestellt werden, es sollte eine einfache URL zu einem (vermutlich thumbnailgroßen) Bild sein. Dieser curl Befehl zum Beispiel funktioniert:

set +H # first turn off history expansion 
curl -F \ 
    "picture=http://tycho.usno.navy.mil/gif/moons/m146.gif" \ 
    -F "message=you're looking great tonight!" \ 
    -F "name=Current Moon Phase" \ 
    -F "link=http://www.calculatorcat.com/moon_phases/phasenow.php" -F caption="How the moon appears tonight" \ 
    -F "access_token=111111111111111|2222222222222222222222222|33333333333333333333456n" \ 
    "https://graph.facebook.com/215958041750734/feed" 

Sie das Ergebnis bei https://www.facebook.com/home.php#!/pages/The-Moon/215958041750734

Update sehen: Ich weiß nicht, wie das oben ohne set +H arbeitete, nach @mlunoe, dass das Ausruf wies darauf hin, Der Punkt wird vom Bash-History-Expander interpoliert. Ich testete mit einfachen Anführungszeichen und löste das Problem nicht, also fand die set Lösung unter https://unix.stackexchange.com/questions/33339/cant-use-exclamation-mark-in-bash

+0

Eine Sache, obwohl .. Das Ausrufezeichen verursachte einige Probleme. Wenn Sie das verwenden und Newline, z. Du solltest einfache Anführungszeichen ('' ') verwenden :) – mlunoe

+0

hmm, habe das schon eine Weile nicht mehr ausprobiert, vielleicht hat sich was geändert. oder vielleicht verwenden Sie eine andere Shell als Bash? –

+0

Nein, mit Bash, aber Bash nicht die Ausrufezeichen in den Anführungszeichen. Referenz: http://superuser.com/a/133788 – mlunoe