2010-10-24 39 views
6

Tôi muốn đăng trên trang - thông qua trang web của mình. . Tôi không tìm thấy bất cứ điều gì có thể giúp tôi trong tài liệu hướng dẫn. Ngoài ra không có kết quả google nào trả lời mi.Đăng trên Facebook bằng PHP SDK

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; 

    } 

Phần sai là:

$session = $facebook->getSession(); 
$me = null; 
if ($session) { 
    (...) 
} else { 
$login_url = $facebook->getLoginUrl(); 
    header("Location: ".$login_url); 
    exit; 
} 

tôi muốn cho phép người dùng đăng nhập vào tài khoản theo quy định FB (điều này với trang), và sau đó gửi. Cài đặt ứng dụng chỉ cho phép tài khoản này đăng, vì vậy nó sẽ ổn ... Nhưng không phải vậy. Khi tôi đăng xuất tài khoản FB, phiên vẫn tồn tại, nhưng trả về ngoại lệ. Chuyện gì vậy?

Trả lời

16

nếu bạn muốn đăng trên một trang fan hâm mộ bạn đang ở đâu người quản trị .. làm tiếp theo

  1. ứng dụng của bạn cần phải có sự cho phép này tối thiểu:

    $this->loginUrl = $this->facebook->getLoginUrl(
          array(
           'scope'   => 'manage_pages,offline_access,publish_stream', 
           'redirect_uri' => $url, 
          ) 
        ); 
    
  2. Sau khi bạn đã đăng nhập vào:

    //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(); 
    } 
    
+0

Cảm ơn! Xuất sắc. – Memochipan

1

Nếu tôi hiểu chính xác điều này, bạn muốn gửi thư đến tường của người dùng đã kết nối với ứng dụng của bạn qua trang web của bạn vào thời điểm họ đăng nhập? Nếu có, hãy thử điều này. Làm lại kịch bản để ngăn chặn việc gửi bài liên tục, nhưng mô hình này, theo lý thuyết, sẽ hoạt động.

if ($session) { 
     try { 
      $uid = $facebook->getUser(); 
      $me = $facebook->api('/me'); 

// Đặt phần nhắn tin ở đây thay thế.

$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); 
      } 

Vì vậy, nếu người dùng được kết nối với ứng dụng của bạn và phiên hợp lệ, nó sẽ tự động gửi bài đăng đến nguồn cấp tin tức của họ (Wall).

Các vấn đề liên quan