2011-05-08 156 views
0

我在使用開放圖形授權發佈到訪問者牆上時遇到了問題,而且似乎無法找出我錯在哪裏。我正在使用Github的PHP/SDK庫。這裏是我的代碼:用圖形和PHP發佈到Facebook牆

<?php 
require_once('facebook.php'); 
$facebook = new Facebook(array(
    'appId' => 'APP_ID', 
    'secret' => 'APP_SECRET', 
    'cookie' => true, 
)); 

$session = $facebook->getSession(); 

$me = null; 
//session-based api call 
if ($session) { 
    try { 
    $uid = $facebook->getUser(); 
    $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    } 
} 

//post to wall/stream function 
if(isset($_POST['status'])) { 
    try { 
     $result = $facebook->api(
      '/me/feed', 
      'post', 
      array(
       'access_token' => 'ACCESS_TOKEN', 
       'message' => $_POST['status'] 
       ) 
      ); 
    } catch (FacebookApiException $e) { 
     echo 'Error: ' . print_r($e, true); 
    } 
} 
?> 

<!-- HTML Form --> 
<form name="" action="index.php" method="post"> 
    <input type="text" name="status" id="status" value=""> 
    <input type="submit" value="submit"> 
</form> 

我不知道發生了什麼事情,我已經通過一個十億教程,文章,交流梳理等,好像我做的一切權利。任何幫助將不勝感激。

+0

你如何使用你的ACCESS_TOKEN? – 2011-05-08 22:53:32

回答

0

使用您編寫的代碼,假定您正在使用Javascript SDK生成facebook cookie,這是$facebook->getSession()調用用於登錄用戶的內容:您是否正確設置了Javascript SDK安裝?

此外,你假設你正在使用的任何應用程序已獲得適當的權限發佈到用戶的牆上。有關所需權限的更多信息,請參閱http://developers.facebook.com/docs/authentication/permissions/。您是否已獲得用戶的請求許可?

1

在這裏,您實際上並沒有檢查用戶是否在發佈前登錄過,而且我也看不到您要求用戶登錄的位置。這裏有一個更好的方法:

<?php 
require_once('facebook.php'); 
$facebook = new Facebook(array(
    'appId' => 'APP_ID', 
    'secret' => 'APP_SECRET', 
    'cookie' => true, 
)); 

$session = $facebook->getSession(); 

if($session) { 
    //post to wall/stream function 
    if(isset($_POST['status'])) { 
     try { 
      $result = $facebook->api(
       '/me/feed', 
       'post', 
       array(
        'message' => $_POST['status'] 
        ) 
       ); 
     } catch (FacebookApiException $e) { 
      echo 'Error: ' . print_r($e, true); 
     } 
    } 
} else { 
    $loginUrl = $facebook->getLoginUrl(array(
     'req_perms' => 'publish_stream' 
    )); 
    header("Location: $loginUrl"); 
} 
?> 

<!-- HTML Form --> 
<form name="" action="index.php" method="post"> 
    <input type="text" name="status" id="status" value=""> 
    <input type="submit" value="submit"> 
</form>