我可以使用以下代码将用户重定向回使用以下代码安装我的应用程序的页面:
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
$page = $signed_request['page'];
$page_id = $page['id'];
$page_array = $facebook->api("/$page_id");
$page_link = $page_array['page_link'];
$redirect_uri = $page_link . '?sk=app_' . $app_id
$user = $facebook->getUser();
if(!$user) {
$url = $facebook->getLoginUrl(array('redirect_uri' => $redirect_uri));
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
}
这适用于大多数页面,但如果页面有年龄限制(并且我不能保证使用我的应用程序的所有页面都不会)$facebook->api("/$page_id");
返回false
,因为从我可以收集的内容来看,我需要用户访问令牌才能获取此信息除非我对它们进行身份验证,否则我无法获得!有什么办法可以解决这个悖论,还是我必须指示我的用户不要对他们的页面进行年龄限制?
更新
我意识到我可以简单地重定向到facebook.com/$page_id
哪个将在身份验证后将用户带回页面,这样我就不必发出 api 请求,$page_link
但理想情况下,我希望他们被重定向到该页面上的我的应用程序页面选项卡,无论是什么指定的默认登陆选项卡是。