перенаправление на URL после входа в Facebook - PullRequest
2 голосов
/ 02 апреля 2011

Я пытаюсь перенаправить свою страницу после успешного входа на новый URL-адрес ..

<?php
      include_once "fbmain.php";
    $config['baseurl']  =   "http://localhost:8080/index.php";;

    // login or logout url will be needed depending on current user state.
    if ($fbme) {
      $logoutUrl = $facebook->getLogoutUrl(
        array(
            'next'      => $config['baseurl'],
        )
      );
    } else {
      $loginUrl = $facebook->getLoginUrl(
        array(
            'display'   => 'popup',
            'next'      => $config['baseurl'] . '?loginsucc=1',
            'cancel_url'=> $config['baseurl'] . '?cancel=1',
            'req_perms' => 'email,user_birthday',
        )
      );
    }

    // if user click cancel in the popup window
    if (isset($_REQUEST['cancel'])){
        echo "<script>
            window.close();
            </script>";
    }

    if ($fbme && isset($_REQUEST['loginsucc'])){
        //only if valid session found and loginsucc is set

        //after facebook redirects it will send a session parameter as a json value
        //now decode them, make them array and sort based on keys
        $sortArray = get_object_vars(json_decode($_GET['session']));
        ksort($sortArray);

        $strCookie  =   "";
        $flag       =   false;
        foreach($sortArray as $key=>$item){
            if ($flag) $strCookie .= '&';
            $strCookie .= $key . '=' . $item;
            $flag = true;
        }

        //now set the cookie so that next time user don't need to click login again
        setCookie('fbs_' . "{$fbconfig['appid']}", $strCookie);

        echo "<script>
            window.close();
            window.opener.location.reload();
            </script>";
    }

    //if user is logged in and session is valid.
    if ($fbme){
       header("Location: http://localhost:8080/main.php");
       exit;
    }

?>

Тем не менее, он загружает страницу внутри всплывающего окна входа в систему, почему это так и как мне загрузить его, чтобы он находился на главной странице.

Ответы [ 3 ]

0 голосов
/ 16 декабря 2012

изменить

if ($fbme){
       header("Location: http://localhost:8080/main.php");
       exit;
    }

к началу сценария

Вы также можете вынуть display' => 'popup', и настроить URI перенаправления, чтобы люди устанавливали приложение и затем возвращались на исходный сайт, чтобы они были перенаправлены после успешной установки.

0 голосов
/ 01 июля 2013

«следующий» не работает, но «redirect_uri» делает работу!

$params = array( 'redirect_uri' => 'http://yourdomain/fb_api/login_success.php' );
$loginUrl = $facebook->getLoginUrl($params);
0 голосов
/ 02 апреля 2011

У меня есть это, используя facebook javascript api.

FB.init({
appId: '<?= FACEBOOK_APP_ID ?>', 
status: true,
cookie: true, xfbml: true
});
FB.Event.subscribe('auth.login', function(response) {
window.location.href='/app/home.php';
}); 
...