digitorum.ru

Как меня найти

Профиль

icq: 4415944

Публикуем посты на страницу в фэйсбуке php скриптом.

facebook, php

Делается это достаточно просто. Для того, что бы запостить что-то на страницу в фэйсбуке нужно:

  • Создать приложение
  • Подписаться на него привелегированным пользователем и получить access_token
  • Писать через приложение, используя этот токен.

Начнем.

Шаг первый: создаем приложение.

Приложение создаем на странице https://develop....

В разделе "Settings > Permissions" в строке"Extended Permissions" нужно выбрать:

  • manage_pages - для доступа к страницам, которыми может управлять пользователь
  • publish_stream - для публикации в ленту страницы
  • offline_access - для получения "вечного" аксес токена

Шаг второй: Получение access_token.

Для этого пишем простой скрипт (точнее это 90% копипаст из документации фэйсбука ):

<?php
	
	error_reporting(E_ALL);
	
	include("facebook.php");
	
	$facebook = new Facebook(array(
	  'appId'  => 'XXX',
	  'secret' => 'YYY',
	  'cookie' => true
	));
	
?><html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	</head>
	<body>
		<pre><?php
			
			$userId = $facebook->getUser();
			
			if(!$userId) {
				
				$loginParameters = array(
					'scope' => 'manage_pages, publish_stream, offline_access',
					'redirect_uri' => 'http://digitorum.ru<#_url#>'
				);
				
				print "<a href='" . $facebook->getLoginUrl($loginParameters) . "'>войти</a>";
					
			} else {
				
				print "<a href='" . $facebook->getLogoutUrl() . "'>выйти</a>";
				
				$result = $facebook->api('/me', 'GET', array('fields' => 'id,name,accounts'));
				
				print_r($result);
				
			}
			
		?></pre>
	</body>
</html>

 

В процессе авторизации у нас попросят выдать приложению права:

После авторизации в браузере будет что-то типа этого:

Array
(
    [id] => 0000000
    [name] => Vasya Pupkin
    [accounts] => Array
        (
            [data] => Array
                (
                    [0] => Array
                        (
                            [category] => Page category
                            [name] => Page Name
                            [access_token] => Page access token
                            [id] => Page id
                            [perms] => Array
                                (
                                    [0] => ADMINISTER
                                    [1] => EDIT_PROFILE
                                    [2] => CREATE_CONTENT
                                    [3] => MODERATE_CONTENT
                                    [4] => CREATE_ADS
                                    [5] => BASIC_ADMIN
                                )

                        )

                )

            [paging] => Array
                (
                    [next] => https://graph.facebook.com/...
                )

        )

)

 

Нас интересует access_token. Проверяем его с помощью Debugger'а facebook https://develop.... В секции "Info" в строке "Expires" должно стоять знячение "Never". Это значит что мы получили immortal access_token.

Но, кстати, не такой уж он и иммортал. Есть у него "кощеева пята". Если пользователь изменит пароль, или будут изменены AppID или AppSecret - токен придется получать заново.

Шаг третий: Публикация записей на страницу.

<?php
	
	error_reporting(E_ALL);
	
	include("facebook.php");
	
	// тот самый полученный ранее immortal token
	$accessToken = 'ZZZ';
	
	$facebook = new Facebook(array(
	  'appId'  => 'XXX',
	  'secret' => 'YYY',
	  'cookie' => true
	));
	
	$facebook->setAccessToken($accessToken);
	$result = $facebook->api(
		'/PageID/feed',
		'POST',
		array(
			'message' => 'Тестовое сообщение через приложение. Дата: ' . date('Y-m-d H:i') . '.',
			'link' => 'http://digitorum.ru/',
			'name' => 'Установленное вручную название ссылки',
			'caption' => 'Минимальное описание для ссылки',
			'description' => 'Описание'
		)
	);
	print_r($result);
	
?>

 

В результате нам фэйсбук отдаст либо id записи, либо код ошибки (если что-то пошло не так).

Profit.

Возможно будет интересно: