-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 に答える