用户进行身份验证后,重定向回页面选项卡?

时间:2011-11-16 21:04:31

标签: facebook authentication iframe redirect

在对用户进行身份验证后,我应该如何将用户重定向回我的页面标签?由于我的应用程序将存在于多个页面上,因此无法将一个特定的URL放入重定向。所以我需要抓住页面的id并将其放入url中。我试过使用会话变量,但它似乎对我不起作用。 :(这是我代码的一部分......

$signed_request = $facebook->getSignedRequest();

$_SESSION['TrueID'] = $signed_request['page']['id']; 

$fbconfig['appBaseUrl'] = "http://www.facebook.com/pages/".$_SESSION['TrueID']."/".$_SESSION['TrueID']."?sk=app_241321439259320";

/* 
 * If user first time authenticated the application facebook
 * redirects user to baseUrl, so I checked if any code passed
 * then redirect him to the application url 
 * -mahmud
 */
if (isset($_GET['code'])){
    header("Location: " . $fbconfig['appBaseUrl']);
    exit;
}
//~~

//
if (isset($_GET['request_ids'])){
    //user comes from invitation
    //track them if you need
}

正如你所看到的,我正在设置一个会话变量以获取页面的id ..但这对我不起作用:(当我访问我的页面时,变量echo很好...但我猜它的在认证过程中迷路了。

2 个答案:

答案 0 :(得分:3)

因此,当页面添加/安装您的应用时,您应该将页面link与页面的id一起存储。

现在,当您的页面标签被加载时,Facebook将发送包含页面page的{​​{1}}参数(以及其他信息,请参阅documentation)。您检索该ID,从您的数据库中获取页面的链接并构建您的页面选项卡链接,这类似于(id是页面的数据库记录):

$page

由于您使用的是PHP-SDK,因此您可以按照以下方式构建登录:

$redirect_uri = $page['page_link'] . '?sk=app_' . $APP_ID

当然,您可能不想直接重定向到登录,而是拥有号召性用语链接:

$user = $facebook->getUser();
if(!$user) {
    $url = $facebook->getLoginUrl(array('redirect_uri' => $redirect_uri, 'scope' => 'read_stream'));
    echo "<script>top.location.href = '$url';</script>";
    exit;
}

答案 1 :(得分:2)

我发现的最佳方式是将应用设置中的网站网址设置为http://www.facebook.com/pages/

然后做这样的事情(测试):

$uid = '';

$facebook = new Facebook(array(
        'appId'  =>'xxxxxxxxxxxxxxx',
        'secret' =>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'cookie' => true,
    'oauth'  => true,
        ));

$uid = $facebook->getUser();

$signedrequest = $facebook->getSignedRequest();

$page_id = $signedrequest["page"]["id"]; 

$fb_access_token = $signedrequest["oauth_token"];

if($uid==''){
echo '<div id="authenticate"><a href="https://www.facebook.com/dialog/oauth/?client_id=APP_CLIENT_ID_HERE&redirect_uri=http://www.facebook.com/pages/'. $page_id .'/'.$page_id.'%3Fsk%3Dapp_APP_CLIENT_ID_HERE&response_type=token" target="_top">Authorize App</a></div>';

这可能有点像黑客,但它适用于我的情况:)希望它可以帮助别人!