我在我的网站上使用facebook登录,用户可以从不同的页面登录,一切正常,只有一件事如何在登录后将用户重定向到以前的URL,这将有所不同 用户单击登录的位置
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);
当您在将用户重定向到 Facebook 登录页面的 PHP 页面上时,请使用 $_SERVER['HTTP_REFERER'](来源)将用户上次加载的页面保存在会话中。
用户登录并 Facebook 重定向到您的回调网址后,从您的会话中获取该网址并将用户重定向到该页面。
对于Facebook登录,您需要在Facebook开发人员页面创建一个应用程序,然后需要在该应用程序中提供有效的重定向链接。下面的代码,
$helper->getSessionFromRedirect();
从构造函数中提供的代码重定向链接进行检查 FacebookRedirectLoginHelper()
中是否存在于应用中。
因此,基本上将此链接添加到您在代码中提供给Facebook应用程序的变量$redirect_url
中。
在Facebook上成功登录后,您无需担心重定向,Facebook的工作是将您重定向回您提供的有效URL。
如果您想在用户从 facebook 回来后将用户重定向到另一个页面,请创建配置变量来存储不同的重定向 URL,并根据您的条件使用header()
函数重定向它们。
使用此代码...
$return_url = base64_decode($_GET["return_url"]); //return url
header('Location:'.$return_url);