0

无法弄清楚为什么它在我的网站和 facebook 之间不断向前循环运行,从不终止最后一步(即将状态发布到墙上)。

require 'facebook.php';

//Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'XXXXXXXXXXX',
  'secret' => 'XXXXXXXXXXXXXXXXXXXXX',
 ));


$user = $facebook->getUser();

根据用户是否登录,我们可能拥有也可能不拥有这些数据。

如果我们在这里有一个 $user id,这意味着我们知道该用户已登录 Facebook,但我们不知道访问令牌是否有效。如果用户退出 Facebook,则访问令牌无效。

if ($user) {
  try {
   // Proceed knowing you have a logged in user who's authenticated.
  $user_profile = $facebook->api('/me');
 } catch (FacebookApiException $e) {
   error_log($e);
   $user = null;
 }
}


if ($user) {
 $logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}

所以这是我发现的两种不同解决方案的非常肮脏的混搭。如果我在单独的文档上执行权限,然后在没有 if 语句的情况下加载下一部分,它实际上没有问题。所以我知道我已正确连接到 Facebook....

if ($user): 

if(array_key_exists('publish_stream', $permissions['data'][0]) ) {
            // Permission is granted!
            // Do the related task
            $post_id = $facebook->api('/me/feed', 'post', array('message'=>'Testing testing 123!'));
    echo "<br><br><br><h1> POSTED STATUS TO WALL!</h1>";

       } else {
            // We don't have the permission
            // Alert the user or ask for the permission!
           echo "Click Below to Enter!";
           header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
       }

这里的问题是它一遍又一遍地运行发布流权限(标题转发并超时,重定向太多),并且永远不会抓住 if 语句来实际发布到墙上?我只是看不出我在这里做错了什么。非常感谢任何帮助。谢谢

4

1 回答 1

1

您缺少的关键线是

$permissions = $facebook->api("/me/permissions");

这会从 facebook 获取当前用户的权限,您需要在 array_key_exists 之前使用它。

于 2012-07-30T23:21:46.827 回答