Я бы хотел опубликовать на странице – через мой сайт. , Я не нашел ничего, что могло бы помочь мне в документации. Также ни один из результатов Google не дал ответ mi.
function post_facebook($data=null){ $result = ""; require_once (ROOT. "/apps/configuration/models/ConfigurationItem.php"); require_once (ROOT . "/components/facebook/facebook.php"); $this->ConfigurationItem = new ConfigurationItem($this->getContext()); $row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_login'); $apiid=$row['value']; $row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_pass'); $secret=$row['value']; $facebook = new Facebook(array( 'appId' => $apiid, 'secret' => $secret, 'cookie' => true, )); $session = $facebook->getSession(); print_r($session); $me = null; if ($session) { try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); } $message=$data['facebook_text']; $attachment = array( 'message' => $data['facebook_text'], 'name' => $data['name'], 'link' => $this->getLinkToLatestNews(), 'description' => '', ); if($data['thumb_file_tree_id'] !== NULL) $attachment = $_SERVER['HTTP_HOST']."media/file/image_by_id/".$data['thumb_file_tree_id']."/?w=400&h=500"; try { $facebook->api('/162618213751448/feed/', 'post', $attachment); $result = "Facebook: Sent"; } catch (FacebookApiException $e) { $result = "Facebook: Failed"; error_log($e); } } else { $login_url = $facebook->getLoginUrl(); header("Location: ".$login_url); exit; } return $result; }
Неправильная часть:
$session = $facebook->getSession(); $me = null; if ($session) { (...) } else { $login_url = $facebook->getLoginUrl(); header("Location: ".$login_url); exit; }
Я хочу разрешить пользователю войти в указанную учетную запись FB (это со страницей), а затем отправить. Настройки приложения позволяют публиковать только эту учетную запись, поэтому должно быть хорошо … Но нет. Когда я выхожу из учетной записи FB, сеанс все еще существует, но возвращает исключение. Что не так?
если вы хотите опубликовать на странице поклонника, где вы являетесь администратором .. сделайте следующее
У вашего приложения должно быть минимальное разрешение:
$this->loginUrl = $this->facebook->getLoginUrl( array( 'scope' => 'manage_pages,offline_access,publish_stream', 'redirect_uri' => $url, ) );
После входа в систему:
//get pages or applications where you are administrator $accounts = $this->facebook->api('/me/accounts'); //page where i want to post $page_id = '227870047252297'; foreach($accounts['data'] as $account) { if($account['id'] == $page_id) { $token = $account['access_token']; } } $attachment = array( 'access_token' => $token, 'message' => 'mensaje', 'name' => 'titulo', 'link' => 'http://...', 'description' => 'xxxxx', 'picture'=> 'http://...', ); try{ $res = $this->facebook->api('/'.$page_id.'/feed','POST',$attachment); } catch (Exception $e){ echo $e->getMessage(); }
Если я это правильно понял, вы хотите отправить сообщение на стену пользователя, которое подключилось к вашему приложению через ваш сайт, как только они войдут в систему? Если да, попробуйте это. Исправьте сценарий, чтобы предотвратить постоянную публикацию, но эта модель, теоретически, должна работать.
if ($session) { try { $uid = $facebook->getUser(); $me = $facebook->api('/me');
// Поместите здесь часть обмена сообщениями.
$message = $facebook->api('/me/feed', 'post', array( 'message'=> '<Message>', 'picture' => '<Picture URL>', 'link'=> '<URL>', 'description'=>'Description', 'name'=> '<Name of Post>', 'privacy'=> '<ALL_FRIENDS (Default)>', 'caption'=> '<Caption>', ) ); } catch (FacebookApiException $e) { error_log($e); }
Поэтому, если пользователь подключен к вашему приложению и сеанс действителен, он автоматически отправит сообщение в ленту новостей (Wall).