2016-06-28 14 views
6

Ich führe Google Logins zum ersten Mal ein, wie in den Abschnitten here und here beschrieben.So überprüfen Sie, ob der Benutzer angemeldet ist oder nicht: "Anmelden bei Google" (OAuth 2.0)

Ich verwende HTML mit Javascript.

Das Problem, das gelöst werden muss, ist wie folgt: Wie kann ich nach der ersten Anmeldung auf einer anderen Seite (z. B. eine Zielseite oder ein Portal, die der Benutzer nach dem Anmelden sieht) überprüfen, ob der Benutzer angemeldet ist ? Gibt es einen Dienst, den ich anrufen kann, um das Login des Benutzers im Status mit meinem App-Schlüssel oder etwas Ähnlichem zu überprüfen? Ich nehme an, dass ich die Google API auf jeder Seite einschließen müsste.

Login-Seite Code:

Skript im Kopf (Code aus dem Google-Tutorial oben aufgeführt):

<head> 
.... 
<script src="https://apis.google.com/js/platform.js" async defer></script> 

<script> 
function onSignIn(googleUser) 
{ 
    var profile = googleUser.getBasicProfile(); 
    console.log('ID: ' + profile.getId()); 
    console.log('Name: ' + profile.getName()); 
    console.log('Image URL: ' + profile.getImageUrl()); 
    console.log('Email: ' + profile.getEmail()); 

    alert(profile.getName()); 
} 

function logout() 
{ 
    alert('logging out'); 
    var auth2 = gapi.auth2.getAuthInstance(); 
     auth2.signOut().then(function() { 
     console.log('User signed out.'); 
     }); 
} 
... 
</head> 

Code Körper (1. Zeile aus dem Google-Tutorial oben aufgeführten, 2. Zeile Abmelde Test auszulösen)

Gibt es eine Möglichkeit, kann ich die Google API auf einer anderen Seite enthalten, und rufen Sie einige Check-Login-Status-Funktion? Oder eine andere Art konkret zu sagen, ob der Benutzer an- oder abgemeldet ist?

Antwort

3

Sie können ein benutzerdefiniertes userEntity-Objekt stringifizieren und in sessionStorage speichern, wo Sie es jederzeit überprüfen können, wenn Sie eine neue Seite laden. Ich habe nicht die folgenden getestet, aber es sollte funktionieren (etwas ähnliches mit WebAPI Token auf die gleiche Art und Weise zu tun)

function onSignIn(googleUser) 
 
{ 
 
    var profile = googleUser.getBasicProfile(); 
 
    console.log('ID: ' + profile.getId()); 
 
    console.log('Name: ' + profile.getName()); 
 
    console.log('Image URL: ' + profile.getImageUrl()); 
 
    console.log('Email: ' + profile.getEmail()); 
 
    
 
    var myUserEntity = {}; 
 
    myUserEntity.Id = profile.getId(); 
 
    myUserEntity.Name = profile.getName(); 
 
    
 
    //Store the entity object in sessionStorage where it will be accessible from all pages of your site. 
 
    sessionStorage.setItem('myUserEntity',JSON.stringify(myUserEntity)); 
 

 
    alert(profile.getName()); 
 
} 
 

 
function checkIfLoggedIn() 
 
{ 
 
    if(sessionStorage.getItem('myUserEntity') == null){ 
 
    //Redirect to login page, no user entity available in sessionStorage 
 
    window.location.href='Login.html'; 
 
    } else { 
 
    //User already logged in 
 
    var userEntity = {}; 
 
    userEntity = JSON.parse(sessionStorage.getItem('myUserEntity')); 
 
    ... 
 
    DoWhatever(); 
 
    } 
 
} 
 

 
function logout() 
 
{ 
 
    //Don't forget to clear sessionStorage when user logs out 
 
    sessionStorage.clear(); 
 
}

Natürlich können Sie einige interne Kontrollen, wenn die sessionstorage-Objekt manipuliert mit. Dieser Ansatz sollte mit modernen Browsern wie Chrome und Firefox funktionieren.

+0

Danke für die Antwort - werde es versuchen und aktualisieren, sobald ich etwas Zeit habe. Können Sie mir sagen, ist die Variable 'sessionStorage' irgendeine Art von globalem Objekt in Javascript? oder ist es etwas, das du einrichten musst? muss jede neue Seite noch php sessionstart-Funktion aufrufen, damit diese Variable in Javascript zur Verfügung steht? –

+0

Sicher ... Es ist in Javascript verfügbar und Sie müssen nicht auf Bibliotheken von Drittanbietern verweisen. Sie können weitere Informationen von W3Schools von http://www.w3schools.com/html/html5_webstorage.asp erhalten –

Verwandte Themen