-1

我创建了一个 Facebook 页面,添加了一个带有应用程序的新选项卡。

现在我想做这些步骤:

  1. 查看用户是否喜欢该页面 // 正在运行
  2. 请求发布状态的权限 // 不起作用
  3. 结束。

这是我使用的代码:

$permissions = array (
    'email',
    'user_status',
    'publish_stream',
    'status_update'
);

public function __construct($app_id, $secret, $perm)
{

        $this->facebook = new Facebook(array(
            'appId'  => $app_id,
            'secret' => $secret,
            'cookie' => true
        ));
        $this->perm = $perm;
}


        public function checkPermissions()
        {
            $allPerm = true;
            $permissions = $this->facebook->api("/me/permissions");
            foreach($this->perm as $value)
            {
                if(!array_key_exists($value, $permissions['data'][0]) ) {
                    $allPerm = false;
                }
            }
            return $allPerm;
        }

        public function RequestPermissions()
        {
            header( "Location: " . $this->facebook->getLoginUrl($this->GenerateScope()) );
        }

    public function GenerateScope()
    {
        $scope = null;
        $last_key = array_keys($this->perm);
        $last_key = end($last_key);
        foreach ($this->perm as $key => $value) {
            if ($key == $last_key) {
                $scope .= $value;
            } else {
                $scope .= $value . ',';
            }
        }
        return array("scope" => $scope);
    }

所以,我检查权限,如果没有全部设置,我想询问它们。 $this->facebook->getLoginUrl($this->GenerateScope()).

但是当我显示链接或重定向到它时,什么都没有(真的什么都没有)发生?

4

1 回答 1

1

您的选项卡应用程序在 facebook.com 上的 iframe 元素中运行。要将用户重定向到不同的 URL,您必须更改最顶部框架的位置。使用 JavaScript 可以做到这一点,因此您所要做的就是让您的 PHP 代码回显此 JavaScript 代码 -

$url = $facebook->getLoginUrl(...your_params...);

echo "<script language=javascript>";
echo "top.location.href ='".$url."';";
echo "</script>";
exit();

这将为您的用户执行重定向。

于 2012-08-07T13:08:16.870 回答