Facebook: авто пост на стене страницы

Вот проблема, которая сводит меня с ума на недели!

Более года я автоматически публиковал статьи своего веб-сайта на своих 2-х страницах в Facebook прямо на стене (основной поток?). Оно работало завораживающе.
Однако с марта эти публикации перешли в публикацию «Публикация-> Посетители» (извините за перевод, но мой FB на французском), поэтому они почти невидимы!

Знаете ли вы, если было изменение политики FB в отношении публикации на страницах? Я знаю, что я использую старый PHP SDK (3.1.1), но я не могу обновить из-за моего сервера, который не имеет PHP 5.6! Однако, я думаю, что если это проблема с SDK-версией, опубликовать ее будет просто невозможно …

Технически задача cron на моем веб-сервере отправляет запрос с моим идентификатором приложения FB и секретным кодом и использует мой личный токен доступа для публикации. Поскольку я являюсь администратором страниц с правами manage_pages, publish_actions, проблем не было.
Я прочитал некоторые темы, в которых говорится о «publish_pages», но чтобы использовать это, вам нужно отправить свое приложение в FB для проверки. https://stackoverflow.com/a/32143270/985357

У поддержки FB есть страница, которая объясняет различия между пользователем и маркером доступа к странице. Но непонятно
https://developers.facebook.com/docs/facebook-login/access-tokens#pagetokens

Я также пытаюсь получить токен доступа одной из моих страниц в https://developers.facebook.com/tools/explorer но когда я пытался его использовать, у меня было «(# 200) Пользователь не авторизовал приложение для выполнения этого действия».

Вот мой код:

require_once dirname(__DIR__).'/include/facebook/facebook.php'; //facebook SDK

$this->oFB = new Facebook(array(
'appId'  => self::FACEBOOK_APP_ID,
'secret' => self::FACEBOOK_SECRET,  'cookie' => true));

//then

$this->oFB->api('/{MyPageId}/feed', 'post',$this->FB_params);

//with FB_params populate:
$FB_params= array('access_token' => self::FACEBOOK_ACCESS_TOKEN_PERSO,
'from' => self::FACEBOOK_APP_ID) ;

//... and ....
$FB_params['to'] = $FB::FACEBOOK_MY_PAGEID ;
$FB_params['message'] = "blabla....." ;
$FB_params['link'] = "url..." ;

/*the way I use to get my FACEBOOK_ACCESS_TOKEN_PERSO:
1- hit :
"https://www.facebook.com/dialog/oauth?client_id=".FACEBOOK_APP_ID."&redirect_uri=http://www.website.com/token.php&scope=manage_pages,publish_actions"2- hit : https://graph.facebook.com/oauth/access_token?client_id=".FACEBOOK_APP_ID."&redirect_uri=http://www.website.com/token.php&client_secret=".FACEBOOK_SECRET."&code=".$_GET['code']
3- access token-> $_GET['access_token']
*/

1

Решение

Вам нужны Appid, App secret и токен доступа. Пожалуйста, будьте в секрете все идентификаторы

$graphUrl = 'https://graph.facebook.com/oauth/access_token?client_id='.APPID .'&client_secret='.APPSECRET.'&grant_type=fb_exchange_token&fb_exchange_token='.ACCESS_TOKEN;

$accessToken = @file_get_contents($graphUrl);
parse_str($accessToken); //get the access_token param in the string and would be named $access_token
if(!$access_token) $access_token = $accessToken;

если не может быть продлен, просто верните токен доступа с истечением 2 часов
Для того, чтобы опубликовать как страницу вашей компании, вам понадобится их идентификатор страницы.

Вот часть моего сценария, которую я использовал, чтобы все это работало. Это не codeigniter, но вы сможете увидеть, как это работает.

$config = array(
'appId' => APPID,
'secret' => APPSECRET,
);$facebook = new Facebook($config);
$facebook->setAccessToken(ACCESS_TOKEN);

// Get User ID
$user = $facebook->getUser();

if ($user) {

try {
$page_id = '************'; //
$page_info = $facebook->api("/$page_id?fields=access_token");
if(!empty($page_info['access_token']) ) {
// do your code stuff

}

} catch { }

Надеюсь это работа

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector