2016-05-30 16 views
0

Ich habe eine Website mit PHP erstellt, die Google und Facebook Login hat. Diese Website hat 6 Seiten. Für alle 6 Seiten sind Kopf- und Fußzeile üblich (enthalten). Angenommen, ich logge mich mit google auf Seite 5 ein. Nach erfolgreicher/fehlgeschlagener Anmeldung navigiere die Seite zu index.php (Seite 1) statt Seite5. Wie kann ich nach erfolgreicher/fehlgeschlagener Anmeldung von Google und Facebook zur selben Seite navigieren? Ist das möglich, ohne alle Seiten in der Google/Facebook Developer Console hinzuzufügen?Wie kann ich nach erfolgreicher Google/Facebook-Anmeldung zur selben Seite navigieren?

Auch ich habe versucht, den Header-Speicherort nach erfolgreicher Anmeldung zu ändern. Es wirft nicht erreichen kann, außerhalb der Zeit Fehler. Kann jemand helfen, dieses Problem zu lösen. Danke im Voraus.

Hinweis: Ich benutze Google und Facebook Oauth-Dienst für die Anmeldung.

Hier ist mein Code: Google Login.

<?php 

session_start(); 
require_once 'dbconnection.php'; 

//Google API PHP Library includes 
require_once 'gvendor/vendor/autoload.php'; 
require_once 'gvendor/vendor/google/apiclient/src/Google/Client.php'; 
require_once 'gvendor/vendor/google/apiclient/src/Google/Service/Oauth2.php'; 

// Fill CLIENT ID, CLIENT SECRET ID, REDIRECT URI from Google Developer Console 
$client_id = 'xxxxxxx'; 
$client_secret = 'xxxxxxx'; 
$redirect_uri = 'http://localhost:80/tthtml/index.php'; 
$simple_api_key = 'xxxxxxx'; 

global $googleauthUrl; 

//Create Client Request to access Google API 
$client = new Google_Client(); 
$client->setApplicationName("PHP Google OAuth Login Example"); 
$client->setClientId($client_id); 
$client->setClientSecret($client_secret); 
$client->setRedirectUri($redirect_uri); 
$client->setDeveloperKey($simple_api_key); 
$client->addScope("https://www.googleapis.com/auth/userinfo.email"); 
$client->setAccessType('offline'); 


//Send Client Request 
$objOAuthService = new Google_Service_Oauth2($client); 

try{ 
//Logout 
if (isset($_REQUEST['logout'])) { 
    $client->revokeToken($_SESSION['access_token']); 
    unset($_SESSION['access_token']); 
    unset($_SESSION['google_user_name']); 
    session_unset(); 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); //redirect user back to page 
} 

//Authenticate code from Google OAuth Flow 
//Add Access Token to Session 
if (isset($_GET['code'])) { 
    $client->authenticate($_GET['code']); 
    $_SESSION['access_token'] = $client->getAccessToken(); 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
} 

//Set Access Token to make Request 
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 
    $client->setAccessToken($_SESSION['access_token']); 
} 

//Get User Data from Google Plus 
//If New, Insert to Database 
if ($client->getAccessToken()) { 
    $userData = $objOAuthService->userinfo->get(); 
    $_SESSION['google_user_name']=$userData['given_name']; 
    $_SESSION['user_id']=$userData->id; 

     if(!empty($userData)) { 
      $dbObj=new database(); 
      $dbObj->openconnection(); 
      $sql='select * from tttbl_user where google_fb_id='.$userData->id; 
       $existing_member = $dbObj->existingMember($sql); 
       if(empty($existing_member)) { 
        $sql="insert into tttbl_user (google_fb_id, user_name, gender, email_id, gplus_link, profile_photo, created_date) values('".$userData->id."','".$userData->name."','".$userData->gender."','".$userData->email."','".$userData->link."','".$userData->picture."',now())"; 
        $dbObj->newUser($sql); 
       } 
       $dbObj->closeconnection(); 
     } 

    } 
else{ 
     $googleauthUrl = $client->createAuthUrl(); 
    } 
} 
catch(Exception $ee) 
{ } 

?> 

Facebook Login

<?php // 
//ob_start(); 
session_start(); 
require_once 'dbconnection.php'; 
require_once 'fvendor/vendor/autoload.php'; 
require_once 'fvendor/vendor/facebook/php-sdk/src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
global $facebook_loginUrl; 

$appId='xxxxxx'; 
$secretkey='xxxxxx'; 

$facebook = new Facebook(array(
    'appId' => 'xxxxxxx', 
    'secret' => 'xxxxxxxx', 
)); 

// Get User ID 
$fb_user = $facebook->getUser(); 

if(isset($_REQUEST['fb_logout'])){ 
    //$accessToken=null; 
    //$logoutUrl = $helper->getLogoutUrl($_SESSION['facebook_access_token'], 'http://localhost/fblogin/fblogin.php'); 
    //unset($_SESSION['facebook_access_token']); 
    unset($_SESSION['facebook_user_name']); 
    session_unset(); 
    session_destroy(); 
    $fb_user = null; 
    header('Location: http://localhost:80/tthtml/index.php'); 
} 


if ($fb_user) { 
    try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $uid = $facebook->getUser(); 
     $user_profile = $facebook->api('/me?fields=id,name,picture,email,gender'); 

    } 
    catch (FacebookApiException $e) { 
     error_log($e); 
     $fb_user = null; 
    } 
} 
else 
{ 
    $facebook_loginUrl = $facebook->getLoginUrl(array('scope' => 'email,user_birthday,user_photos','req_perms' => 'user_mobile_phone',)); 
     $facebookurlstring=$facebook_loginUrl; 
     $x=strpos($facebookurlstring,'redirect_uri='); 
     $y=strpos($facebookurlstring, 'state'); 
     $facebookurllength= strlen($facebookurlstring); 
     //substr($str,0,$y+13).'http://localhost/tthtml/index.php'.substr($str, $y+13+$x,$length) 
     $facebook_loginUrl=substr($facebookurlstring,0,$x+13).'http://localhost/tthtml/index.php'.substr($facebookurlstring, $y-1,$facebookurllength); 
} 

if($fb_user) 
{ 
     $userid=$user_profile['id']; 
    $username = $user_profile['name'];   
    $useremail = $user_profile['email']; 

     $userpicture=$user_profile['picture']['data']['url']; 
     $usergender=$user_profile['gender']; 
     $mobilenumber=$user_profile['user_mobile_phone']; 

     $_SESSION['facebook_user_name']=$username; 
    $_SESSION['user_id']=$userid; 

     if(isset($_SESSION['facebook_user_name'])&& $_SESSION['facebook_user_name']) { 
      $dbObj=new database(); 
      $dbObj->openconnection(); 
      $sql='select * from tttbl_user where google_fb_id='.$userid.';'; 
       $existing_member = $dbObj->existingMember($sql); 
       if(empty($existing_member)) { 
        $sql="insert into tttbl_user (google_fb_id, user_name, gender, email_id, profile_photo, created_date)" 
          . " values('".$userid."','".$username."','".$usergender."','".$useremail."','".$userpicture."',now())"; 
        $dbObj->newUser($sql); 
       } 
       $dbObj->closeconnection(); 

     } 
} 
?> 

Wenn ich die Umleitung URI zu ändern, wird es in der URL-Liste in Entwickler-Konsole suchen. Wenn es nicht in der Liste der Entwickler-Konsole verfügbar ist, dann wirft es ulr ist nicht in der Whitelist (für Facebook) und Seite nicht gefunden (für Google) Fehler wird geworfen.

+0

Wie Sie 'Google und Facebook Oauth Service für login.' umleiten ?? –

+0

Bitte zeigen Sie uns den Code, den Sie verwenden, um sich einzuloggen, und die Seite, von der Sie sich einloggen. – Webeng

+0

Es gibt viele oauth Bibliothek da draußen. Dort gibt es etwas namens 'redirect_uri', du kannst seinen Callback definieren, damit dein authentifizierter Benutzer darauf umleitet, denke ich. – Chay22

Antwort

0

Versuchen mit jQuery-Code

echo "<script>window.location.href ='yourpage.php';</script>"; 
+0

Sorry, aber das beantwortet die Frage nicht. In der OP-Frage geht es um OAuth und wie man nach dem Anmeldevorgang zur richtigen Ziel-URL zurückkehrt. – arkascha

Verwandte Themen