[英]how to redirect the user to the previous link after login using facebook
我在我的網站上使用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);
當您在PHP頁面上將用戶重定向到Facebook登錄頁面時,請使用$ _SERVER ['HTTP_REFERER']( 源 )在會話中保存用戶上次加載的頁面。
一旦用戶登錄並且Facebook重定向到您的回調URL,請從您的會話中獲取該URL並將用戶重定向到該頁面。
對於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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.