2016-06-28 10 views
6

मैं here और here वर्णित पहली बार Google लॉग इन लागू कर रहा हूं।उपयोगकर्ता को लॉग इन किया गया है या नहीं, "Google साइन इन" (OAuth 2.0)

मैं जावास्क्रिप्ट के साथ HTML का उपयोग कर रहा हूं।

समस्या को हल करने की समस्या निम्नानुसार है: प्रारंभिक लॉगिन के बाद, मैं एक अलग पृष्ठ पर (लैंडिंग पृष्ठ कह सकता हूं, या पोर्टल जो उपयोगकर्ता लॉग इन करने के बाद देखता है), जांचें कि उपयोगकर्ता लॉग इन है या नहीं ? क्या ऐसी कोई सेवा है जिसे मैं अपनी ऐप कुंजी या कुछ समान स्थिति में उपयोगकर्ता के लॉगिन की जांच करने के लिए कॉल कर सकता हूं? मुझे लगता है कि मुझे प्रत्येक पृष्ठ पर Google एपीआई शामिल करना होगा।

लॉगिन पृष्ठ कोड:

स्क्रिप्ट हेड (कोड गूगल के ऊपर सूचीबद्ध ट्यूटोरियल से):

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

कोड शरीर में (गूगल के ट्यूटोरियल से 1 लाइन से ऊपर सूचीबद्ध, 2 लाइन लॉगआउट परीक्षण को गति प्रदान करने के लिए)

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

क्या कोई तरीका है कि मैं किसी अन्य पृष्ठ पर Google एपीआई शामिल कर सकता हूं, और फिर कुछ चेक लॉगिन स्थिति फ़ंक्शन को कॉल कर सकता हूं? या ठोस तरीके से यह बताने का एक और तरीका है कि उपयोगकर्ता लॉग इन या आउट है या नहीं?

उत्तर

3

आप कस्टम उपयोगकर्ता एंटीटी ऑब्जेक्ट को स्ट्रिंग कर सकते हैं और इसे सत्र स्टोरेज में संग्रहीत कर सकते हैं जहां आप इसे किसी भी नए पृष्ठ को लोड करते समय देख सकते हैं। मैं परीक्षण नहीं किया निम्नलिखित लेकिन यह काम

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

बेशक

(एक ही तरीके से वेबएपीआई टोकन के साथ कुछ ऐसा ही कर रही है), तो आप कुछ आंतरिक जाँच करता है हो सकता है अगर sessionStorage वस्तु छेड़छाड़ कर रहा है साथ में। इस दृष्टिकोण को क्रोम और फ़ायरफ़ॉक्स जैसे आधुनिक ब्राउज़रों के साथ काम करना चाहिए।

+0

उत्तर के लिए धन्यवाद - जैसे ही मुझे कुछ समय मिल जाएगा, इसे आजमाएं और अपडेट करें। क्या आप मुझे बता सकते हैं कि 'sessionStorage' जावास्क्रिप्ट में किसी प्रकार का वैश्विक ऑब्जेक्ट है? या यह कुछ है जो आपको सेटअप करना होगा? जावास्क्रिप्ट में इस चर को सुलभ करने के लिए प्रत्येक नए पृष्ठ को अभी भी php sessionstart फ़ंक्शन को कॉल करने की आवश्यकता है? –

+0

निश्चित रूप से ... यह जावास्क्रिप्ट में उपलब्ध है और आपको किसी तीसरे पक्ष के पुस्तकालयों को संदर्भित करने की आवश्यकता नहीं है। आप http://www.w3schools.com/html/html5_webstorage.asp से W3Schools से कुछ और जानकारी प्राप्त कर सकते हैं –

संबंधित मुद्दे