Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
День добрый,
Есть небольшой сайт к примеру блог (новости, статьи).
И хотелось бы сделать так, что бы когда я добавлял к примеру новую статью то оно её постило в бд + постило эту же статью на моей странице в фейсбуке(ленте или новостях).
Не подскажите как можно такое сделать?
Или быть может уже есть такой package?
Не в сети
Готовых пакетов нет, но есть SDK.
Правда придется повозиться с получением токенов (а они, насколько я знаю, выдаются только в момент авторизации через фейсбук для веб приложения).
Т.е. еще и авторизация понадобится, через фейсбук.
Не в сети
Токены фб живут 60 дней, если в группу постите. У одного из клиентов сделали постинг в твиттер, фб сразу оттуда подтягивает и с токенами проблем нет. Но это уже
как вы пожелаете.
Ставите через композер, почитайте официальные доки:
waavi/url-shortener
thujohn/twitter
facebook/graph-sdk
Код выдернул прям с проекта. Если не поймете пишите
protected function publishTwitter(SocialPublishing $item)
{
SocialLog::newInstance()->info("app", $item->toArray());
/** @var Apartment $apartment */
$apartment = $item->apartment()->first();
if(!is_null($apartment)) {
$transform = (new ApartmentTransformer())->transformBasic($apartment, "ca");
$twitterPost = \Twitter::postTweet([
'status' => $transform->title . " " . UrlShortener::driver('google')->shorten($transform->url),
'format' => 'object'
]);
$item->twitterId = $twitterPost->id_str;
$item->twitterStatus = 1;
$item->save();
return $item;
}
return null;
}
protected function publishFacebook(SocialPublishing $item)
{
SocialLog::newInstance()->info("app", $item->toArray());
/** @var Apartment $apartment */
$apartment = $item->apartment()->first();
if(!is_null($apartment)) {
$transform = (new ApartmentTransformer())->transformBasic($apartment, "ca");
$fb = new Facebook([
'app_id' => config('social.facebook.appId'),
'app_secret' => config('social.facebook.app_secret'),
'default_graph_version' => config('social.facebook.default_graph_version')
]);
$groupId = config('social.facebook.fb_group_id');
$parts[] = $transform->typeApartmentOperations;
$parts[] = $transform->bedRoomsValue;
$parts[] = $transform->locationsValue;
$parts[] = $transform->price;
$linkData = [
'link' => $transform->url,
// 'link' => "[url]http://pisos.ad/anunci-9857/pis-lloguer-encamp-andorra[/url]",
'message' => implode(", ", $parts),
];
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->post("/{$groupId}/feed", $linkData, config('social.facebook.default_access_token'));
$graphNode = $response->getGraphNode();
$item->fbId = $graphNode['id'];
$item->fbStatus = 1;
$item->save();
} catch(FacebookResponseException $e) {
SocialLog::newInstance()->info("FacebookResponseException: " . $e->getMessage());
SocialLog::newInstance()->info($e->getTraceAsString());
return null;
} catch(FacebookSDKException $e) {
SocialLog::newInstance()->info("FacebookSDKException: " . $e->getMessage());
SocialLog::newInstance()->info($e->getTraceAsString());
return null;
}
return $item;
}
return null;
}
Изменено lodar (29.01.2018 14:57:00)
Не в сети
Токены фб живут 60 дней, если в группу постите.
60 дней живут же только long lived токены, которые получены через авторизацию мобильного приложения?
config('social.facebook.default_access_token') - это токен чего? как его получили?
Не в сети
https://developers.facebook.com/tools/explorer, выбираете приложение и маркеры доступа.
Подставляете и получаете токен.
https://graph.facebook.com/v2.11/oauth/ … client_id=[апп айди]&client_secret=[секретный ключ приложения]&fb_exchange_token=[маркер доступа]
Не претендую на единственное верное и правильное решение. В моем случае надо было быстро и что бы работало. Работает. Если кто-то может подсказать иное решение - с благодарностью почитаю.
Изменено lodar (29.01.2018 21:49:58)
Не в сети
Спасибо, только поправлю, вырезка из документации "тогда как срок действия маркеров длительного действия составляет около 60 дней."
У меня бывало, что токен терял годность и через 2 недели.
строго 60 дней - это только мобилки.
Изменено covobo (30.01.2018 11:34:05)
Не в сети
Страницы 1