Wie postest du auf einer Facebook-Seite (kein Profil) an der Wand?

86

Ich habe eine Blog-Site in PHP geschrieben und sie veröffentlicht neue Blog-Posts auf Twitter und einen Blog-Ping automatisch unter der Haube mit einfachen http-Post-Anfragen, die mit PHP Curl übergeben werden.

Ich habe eine Facebook-Seite für die Blog-Site und möchte, dass die Updates an der Wand auf der Seite veröffentlicht werden. Gibt es eine einfache Möglichkeit, dies zu tun?

Was ich wirklich möchte, ist eine URL und eine Reihe von Parametern, die als http-Post-Anfrage zusammengefasst werden sollen.

Beachten Sie, dass dies dazu dient, auf einer neuen Stilseite kein Profil an die Wand zu posten.

Danke im Voraus.

Matte
quelle
Haben Sie das Facebook Developer Wiki unter wiki.developers.facebook.com/index.php/Main_Page oder an anderer Stelle auf der Entwicklerseite developer.facebook.com/?ref=pf ausprobiert ?
DOK
Ich bin kein Facebook-Entwickler, aber ich denke, Sie müssen zuerst eine FB-App schreiben, um dazu berechtigt zu sein.
September

Antworten:

65

Holen Sie sich das PHP SDK von github und führen Sie den folgenden Code aus:

<?php
$attachment = array(
    'message' => 'this is my message',
    'name' => 'This is my demo Facebook application!',
    'caption' => "Caption of the Post",
    'link' => 'http://mylink.com',
    'description' => 'this is a description',
    'picture' => 'http://mysite.com/pic.gif',
    'actions' => array(
        array(
            'name' => 'Get Search',
            'link' => 'http://www.google.com'
        )
    )
);

$result = $facebook->api('/me/feed/', 'post', $attachment);

Mit dem obigen Code wird die Nachricht an Ihre Pinnwand gesendet. Wenn Sie sie an die Pinnwand Ihrer Freunde oder anderer Personen mesenden möchten, ersetzen Sie sie durch die Facebook-Benutzer-ID dieses Benutzers. Weitere Informationen finden Sie in der API-Dokumentation.

Harish Kurup
quelle
Dieser Code funktioniert großartig!, aber in der Post gibt es kein Bild. Was fehlt mir hier? Vielen Dank!
Diego
@Diego überprüfen Sie die Bilder URL. im obigen Beispiel ist es mysite.com/pic.gif. so wird es für das Bild in der angegebenen URL holen. Versuchen Sie es also. Bitte überprüfen Sie die fb-Dokumentation auf Änderungen der Parameter, denn das letzte Mal, als ich in der FB-Front arbeitete, war August 2010.
Harish Kurup
Ist $ facebook eine Variable, die in die PHP-Installation integriert ist? Wenn nicht, wie wird die $ facebook-Instanz erstellt?
Sadmicrowave
@sadmicrowave Die Variable $ facebook ist das Objekt der Klasse Facebook (möglicherweise wurde der Klassenname geändert. Bitte lesen Sie die Dokumente, nachdem Sie die Idee erhalten haben). Sie müssen das Objekt mit dem folgenden Code instanziieren: "$ facebook = new Facebook (Array ('appId' => APPID, 'secret' => SECRETKEY, 'cookie' => true));"
Harish Kurup
Sie müssen auch das PHP SDK in Ihrer App installiert haben, um Zugriff auf die Facebook-Klasse zu haben
mitchellhislop
9

Das funktioniert bei mir:

try {
       $statusUpdate = $facebook->api('/me/feed', 'post',
                 array('name'=>'My APP on Facebook','message'=> 'I am here working',
                 'privacy'=> array('value'=>'CUSTOM','friends'=>'SELF'),
                 'description'=>'testing my description',
                 'picture'=>'https://fbcdn-photos-a.akamaihd.net/mypicture.gif',
                 'caption'=>'apps.facebook.com/myapp','link'=>'http://apps.facebook.com/myapp'));
 } catch (FacebookApiException $e) {
      d($e);
}
Helton Uchoa
quelle
Ich habe ein Problem mit OAuth, Fehler 200. Meine APP fragt nach manage_pages, Publish_actions, Publish_stream ... Irgendeine Idee?
Jepser Bernardino
8

Harish hat hier die Antwort - außer Sie müssen manage_pagesbei der Authentifizierung um Erlaubnis bitten und dann die page-idanstelle der mebeim Posten verwenden ....

$result = $facebook->api('page-id/feed/','post',$attachment);
Phill Price
quelle
1
Aber Sie müssen Seitenzugriffstoken benötigen, um als Seite zu posten
Dänisch Iqbal
5

Sie können nicht automatisch auf Facebook-Wänden posten, ohne eine Anwendung zu erstellen und den Vorlagen-Feed-Publisher zu verwenden, wie Frank betont hat.

Das einzige, was Sie tun können, ist die Verwendung der von ihnen bereitgestellten "Freigabe" -Widgets, für die Benutzerinteraktion erforderlich ist.

Darryl E. Clarke
quelle
3

Wenn Ihr Blog einen RSS-Feed ausgibt, können Sie die Facebook- Anwendung " RSS Graffiti " verwenden, um diesen Feed auf Ihrer Pinnwand in Facebook zu veröffentlichen. Es gibt auch andere RSS-Facebook-Apps. Suche einfach "Facebook nach RSS-Apps" ...

Ricky
quelle
0

Sie können API-Aufrufe tätigen, indem Sie die HTTP-Methode auswählen und optionale Parameter festlegen:

$facebook->api('/me/feed/', 'post', array(
    'message' => 'I want to display this message on my wall'
));

Beitrag an Facebook senden Wall:

Fügen Sie die Datei fbConfig.php hinzu, um die Facebook-API zu verbinden und das Zugriffstoken zu erhalten.

Nachricht, Name, Link, Beschreibung und das Bild werden an die Facebook-Pinnwand gesendet. Der Status nach der Einreichung wird angezeigt.

Wenn das FB-Zugriffstoken ($ accessToken) nicht verfügbar ist, wird die Facebook-Anmelde-URL generiert und der Benutzer wird zur FB-Anmeldeseite weitergeleitet.

Post auf Facebook Wall PHP SDK

<?php
//Include FB config file
require_once 'fbConfig.php';

if(isset($accessToken)){
    if(isset($_SESSION['facebook_access_token'])){
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
    }else{
        // Put short-lived access token in session
        $_SESSION['facebook_access_token'] = (string) $accessToken;

        // OAuth 2.0 client handler helps to manage access tokens
        $oAuth2Client = $fb->getOAuth2Client();

        // Exchanges a short-lived access token for a long-lived one
        $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
        $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;

        // Set default access token to be used in script
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
    }

    //FB post content
    $message = 'Test message from CodexWorld.com website';
    $title = 'Post From Website';
    $link = 'http://www.codexworld.com/';
    $description = 'CodexWorld is a programming blog.';
    $picture = 'http://www.codexworld.com/wp-content/uploads/2015/12/www-codexworld-com-programming-blog.png';

    $attachment = array(
        'message' => $message,
        'name' => $title,
        'link' => $link,
        'description' => $description,
        'picture'=>$picture,
    );

    try{
        //Post to Facebook
        $fb->post('/me/feed', $attachment, $accessToken);

        //Display post submission status
        echo 'The post was submitted successfully to Facebook timeline.';
    }catch(FacebookResponseException $e){
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    }catch(FacebookSDKException $e){
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    }
}else{
    //Get FB login URL
    $fbLoginURL = $helper->getLoginUrl($redirectURL, $fbPermissions);

    //Redirect to FB login
    header("Location:".$fbLoginURL);
}

Refrences:

https://github.com/facebookarchive/facebook-php-sdk

https://developers.facebook.com/docs/pages/publishing/

https://developers.facebook.com/docs/php/gettingstarted

http://www.pontikis.net/blog/auto_post_on_facebook_with_php

https://www.codexworld.com/post-to-facebook-wall-from-website-php-sdk/

Farhad
quelle
Vielen Dank. Haben Sie den Code ausprobiert? Benutzerdefinierte Linkvorschau-Snippets sind jetzt veraltet, sodass Code nicht auf einer Seite veröffentlicht wird ( developer.facebook.com/blog/post/2017/06/27/… )
user919426