我创建了一个Facebook页面,添加了一个带有应用程序的新标签。
现在我想要这些步骤:
这是我使用的代码:
$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())
。
但是当我显示链接或重定向到它时,没有发生什么事(真的没什么)?
答案 0 :(得分:1)
您的标签应用程序在facebook.com上的iframe元素中运行。要将用户重定向到其他网址,您必须更改最顶层框架的位置。 这是可以使用JavaScript,所以你要做的就是让你的PHP代码回应这个JavaScript代码 -
$url = $facebook->getLoginUrl(...your_params...);
echo "<script language=javascript>";
echo "top.location.href ='".$url."';";
echo "</script>";
exit();
这将为您的用户执行重定向。