简体   繁体   English

使用Facebook登录后如何将用户重定向到上一个链接

[英]how to redirect the user to the previous link after login using facebook

I'm using facebook login in my website where the user can login from different pages everything works fine just one thing how to redirect the user to the previous url after login which will be different depond on where the user click login 我在我的网站上使用Facebook登录,用户可以从不同的页面登录,一切正常,只是一件事如何在登录后将用户重定向到上一个网址,这将取决于用户单击登录的位置

    use Facebook\FacebookSession;
    use Facebook\FacebookRedirectLoginHelper;
    use Facebook\FacebookRequest;
    use Facebook\FacebookResponse;
    use Facebook\FacebookSDKException;
    use Facebook\FacebookRequestException;
    use Facebook\FacebookAuthorizationException;
    use Facebook\GraphObject;
    use Facebook\GraphUser;
    use Facebook\GraphSessionInfo;
    use Facebook\FacebookHttpable;
    use Facebook\FacebookCurlHttpClient;
    use Facebook\FacebookCurl;
        $app_id='XXXXXXXXX';
        $app_sercret='XXXXXXXXXXXX';
         $redirect_url='http://example.com';

        //Intialize
        FacebookSession::setDefaultApplication($app_id,$app_sercret);
        $helper= new FacebookRedirectLoginHelper($redirect_url);
        $sess=$helper->getSessionFromRedirect();


        if(isset($_SESSION['fb_token'])){
                $sess = new FacebookSession($_SESSION['fb_token']);
            }
        //if exisit
           if(isset($sess)){
             $_SESSION['fb_token']= $sess->getToken();
             $request = new FacebookRequest($sess,'GET','/me');
             $response =$request->execute();
             $graph    = $response->getGraphObject(GraphUser::classname());
             $name     = $graph->getName();
             $id        = $graph->getId();
             $pimage     = 'http://graph.facebook.com/'.$id.'/picture?width=170';
             $timage     = 'http://graph.facebook.com/'.$id.'/picture?width=30';
             $email     = $graph->getproperty('email');
             $attributes=array(
            "user_fname" => $name,
            "user_email" => $email,
            "user_image" => $pimage,
            "user_thumb" => $timage,
        );
           $newuser   =Details::create($attributes);

When you are on your PHP page where you redirect users to your Facebook login page, save your user's last loaded page in session by using $_SERVER['HTTP_REFERER'] ( source ). 当您在PHP页面上将用户重定向到Facebook登录页面时,请使用$ _SERVER ['HTTP_REFERER']( )在会话中保存用户上次加载的页面。

Once user logs in and Facebook redirects to your callback URL, fetch that URL from your session and redirect user to that page. 一旦用户登录并且Facebook重定向到您的回调URL,请从您的会话中获取该URL并将用户重定向到该页面。

For the facebook login you need to create an app in facebook developers page and then need to give a valid redirect link in that app. 对于facebook登录,您需要在facebook开发人员页面上创建一个应用,然后需要在该应用中提供有效的重定向链接。 The below code, 下面的代码,

$helper->getSessionFromRedirect();

checks from your code redirect link provided in constructor FacebookRedirectLoginHelper() is present in the app or not. 应用程序中是否存在来自构造函数FacebookRedirectLoginHelper()提供的代码重定向链接的检查。

So basically add this link in the variable $redirect_url that you provided in code to your facebook app. 因此,基本上将此链接添加到您在代码中提供给Facebook应用程序的变量$redirect_url中。

You do not need to worry about redirect after login is done successfully on facebook, it is the job of facebook to redirect you back to the valid url that you provide. 在Facebook上成功完成登录后,您无需担心重定向,facebook的工作就是将您重定向回您提供的有效URL。

If you think to redirect user to another page after he comes back from facebook, then create config variables to store different redirect url and use header() function to redirect them depending upon your conditions. 如果您想在用户从Facebook返回后将用户重定向到另一个页面,则创建配置变量以存储不同的重定向URL并根据您的条件使用header()函数将其重定向。

Use this code... 使用此代码...

$return_url = base64_decode($_GET["return_url"]); //return url
header('Location:'.$return_url);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM