POST to Facebook page via CURL

curl, facebook, php, post

Solution

Facebook has changed the way of leasing tokens. Please use the facebook PHP SDK from https://github.com/facebook/facebook-php-sdk

Problem

I've set up a script to post news to my facebook page via PHP It worked for the last 2 years Now, without notice it stopped working. I correctly get the `access_token` but the second part returns this error ``` {"error":{"message":"An unknown error has occurred.","type":"OAuthException","code":1}} ``` Here is the code ``` $url = "https://graph.facebook.com/oauth/access_token"; $postString = "client_id=KEY&client_secret=SECRET&type=client_cred"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FAILONERROR, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $postString); $access_token = str_replace( "access_token=", "", curl_exec($curl) ); $titolo = 'Test'; $link_pulito = 'test.html'; $testo_fb = 'Test'; $attachment = array( 'access_token' => $access_token, 'message' => 'MESSAGE', 'name' => 'test', 'link' => 'http://www.test.com/workshop/', 'description' => 'test test test', 'picture'=>'http://www.test.com/77818763a19937bdd82b25f26cef2522.jpg' ); // set the target url $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/MYPAGE/feed'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); //to suppress the curl output $result= curl_exec($ch); curl_close ($ch); ```

Original source