2016-06-28 22 views
6

ile oturum açıp açmadığı nasıl kontrol edilir? Google oturum açma işlemini ilk kez here ve here açıklandığı gibi uygularım.Kullanıcının "Google Giriş Girişi" (OAuth 2.0)

Javascript ile HTML kullanıyorum.

Çözülmesi gereken sorun şu şekildedir: İlk girişten sonra, farklı bir sayfada (kullanıcının giriş yaptıktan sonra gördüğü bir açılış sayfası veya portal) nasıl giriş yapabilirim, kullanıcının giriş yapıp yapmadığını kontrol edin ? Kullanıcının giriş durumunu uygulama anahtarımla veya benzer bir şeyle kontrol etmek için arayabileceğim bir hizmet var mı? Her sayfada google API'yi eklemem gerektiğini varsayalım.

Giriş Sayfası Kod:

Senaryo kafanda (Kod yukarıda listelenen Google'ın öğreticisindeki): Vücut

<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> 

Kanunu (yukarıda listelenen Google'ın öğreticisindeki 1 hat, 2. hat çıkış testi tetiklemek için)

<body> 
... 
<div class="g-signin2" data-onsuccess="onSignIn"></div> 
<div onmousedown="logout()">Logout</div> 
... 
</body> 

ben başka bir sayfada google API dahil, ve sonra bazı çek giriş durumu işlevini çağırabilirsiniz bazı yolu var mı? Veya kullanıcının giriş yapıp yapmadığını somut olarak anlamanın başka bir yolu var mı?

cevap

3

Özel bir userEntity nesnesini dizgeleyebilir ve oturumunuzu yeni bir sayfa yüklediğinizde kontrol edebileceğiniz sessionStorage'da saklayabilirsiniz. Ben test etmedim aşağıdaki ancak sessionStorage nesne alarm verirse bu size bazı iç kontroller olabilir, Elbette

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(); 
 
}

(aynı şekilde WebAPI belirteçleri ile benzer bir şey yapıyor) çalışması gerekir ile. Bu yaklaşım, Chrome ve Firefox gibi modern tarayıcılarla çalışmalıdır.

+0

Cevabınız için teşekkürler - biraz zaman alır almaz deneyin ve güncelleyeceğim. Bana 'sessionStorage' değişkeni javascript'te bir çeşit global nesne olduğunu söyleyebilir misin? ya da kurmanız gereken bir şey mi? javascript'te bu değişkene erişebilmek için her yeni sayfanın php sessionionstart işlevini çağırması gerekir mi? –

+0

Elbette ... Javascriptte mevcuttur ve üçüncü parti kütüphanelerine başvurmanıza gerek yoktur. W3Schools'tan daha fazla bilgiyi http://www.w3schools.com/html/html5_webstorage.asp adresinden alabilirsiniz. –

İlgili konular