Intereting Posts
Неверный файл при загрузке файла PHP MySQL и PHP – как отображать только первые пять строк? PHP Twig: доступ к текущей переменной шаблона из макроса без передачи? Расстояние Левенштейна: как лучше обрабатывать слова, заменяющие позиции? как вызвать функцию в PHP через 10 секунд загрузки страницы (не используя HTML) Регулярное выражение для папок MySQL и PHP: UTF-8 с кириллицей PHP: перемещение элемента ассоциативного массива в начало массива Подключить PHP к Interbase: "undefined function ibase_connect ()" Использование href onclick для обновления div без перезагрузки страницы? Slim Framework возвращает ответ без ответа «return $ response» Измените задание cron на вызов через url (curl) для вызова через локальную командную строку (PHP) Загрузка изображений с использованием php, но без обновления страницы Драйвер sqlsrv не появляется на сервере WAMP phphinfo () после добавления записей расширения в файле php.ini Кнопка загрузки изображения PHP

сообщение как страница на стене facebook

Я прочитал много других тем по этому вопросу, но я не нашел ничего полезного.

Что я хочу сделать

Когда я добавляю статью на свой сайт, я бы хотел опубликовать обновление в Twitter и Facebook. Он работает для Twitter, но у меня проблема с Facebook.

Я загрузил facebook.php, который использует OAuth.

Моя проблема

Когда я публикую простой текст, он отлично работает, он отображается как размещен на странице по мере необходимости. Но когда я хочу опубликовать текст с миниатюрой, ссылкой, надписью и описанием, она будет размещена так, как будто моя личная учетная запись разместила это обновление на стене моей страницы.

Вот мой код для простого текста (я попросил acces_token выше):

$post = array('access_token' => $token, 'message' => 'My message'); try{ $res = $facebook->api('/mypage/feed','POST',$post); print_r($res); } catch (Exception $e){ echo $e->getMessage(); } 

Вот неправильный код:

 $post = array('access_token' => $token, 'message' => 'My message', 'picture' => 'http://img.ruphp.com/post/picture.jpg', 'link' => 'http://www.website.com', 'caption' => 'test caption', 'description' => 'test description', 'from' => array('name' =>'Page name', 'id' => 'page id'), ); try{ $res = $facebook->api('/mypage/feed','POST',$post); print_r($res); } catch (Exception $e){ echo $e->getMessage(); } 

API Facebook плохо документирован, но я искал везде, чтобы не задавать вам этот вопрос. Но я не нашел никакого решения.

Большое спасибо за помощь.

Вениамин

Надеясь, что у вас есть следующие разрешения (publis_stream, manage_pages, offline_access) и access_token, попробуйте следующий код

  <?php /** * Edit the Page ID you are targeting * And the message for your fans! */ $page_id = 'PAGE_ID'; $message = "I'm a Page!"; /** * This code is just a snippet of the example.php script * from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php> */ require '../src/facebook.php'; // Create our Application instance (replace this with your appId and secret). $facebook = new Facebook(array( 'appId' => 'app_id', 'secret' => 'app_secret', )); // Get User ID // $user supposed to be page admin $user = $facebook->getUser(); if ($user) { try { $page_info = $facebook->api("/$page_id?fields=access_token"); if( !empty($page_info['access_token']) ) { $args = array( 'access_token' => $page_info['access_token'], 'message' => $message , 'name' => 'My Wall Post Header/Title Here', 'caption' => 'Small caption here', 'link' => 'http://www.mywebsite.org', 'description' => 'Wall Post Details Here', 'picture' => "http://www.mywebsite.org/images/logo.gif", ); $post_id = $facebook->api("/$page_id/feed","post",$args); } } catch (FacebookApiException $e) { error_log($e); $user = null; } } // Login or logout url will be needed depending on current user state. if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream')); } ?> 

Вам нужно реализовать некоторые og:tags Open Graph og:tags на вашей странице, чтобы Facebook знал, какие изображения, описания и названия нужно брать.

https://developers.facebook.com/docs/opengraphprotocol/

Они выглядят примерно так:

 <meta property="og:title" content="The Rock"/> <meta property="og:type" content="movie"/> <meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/> <meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/> <meta property="og:site_name" content="IMDb"/> <meta property="fb:admins" content="USER_ID"/> <meta property="og:description" content="A group of US Marines, under command of a renegade general, take over Alcatraz and threaten San Francisco Bay with biological weapons."/> 

После того, как вы внедрили необходимые метатеги, вы можете протестировать свою работу, используя удобный отладчик URL-адресов Facebook . Он расскажет вам, есть ли проблемы, какие именно они есть, и как их исправлять.

Вероятно, это будет не так, убедитесь, что вы не используете URL-адреса изображений, которые разрешают внутреннее имя домена (т. Е. Путем обновления вашего файла локальных хостов ). Я обнаружил, что после большого тестирования (хотя и с использованием вызова FB.UI в JS), если имя домена указывает внутри, даже если оно также доступно извне (это бит, который меня бросил), вы можете получить ошибки. Это только казалось важным для аргумента Picture.

Удачи!