2011-05-08 125 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>