2015-04-17 9 views
5

का उपयोग कर Google+ से साइन आउट करना मैं अपनी साइट पर एक Google+ लॉगिन बटन डालने का प्रयास कर रहा हूं। बटन पूरी तरह से काम करता है। मेरे पास एक साइन आउट बटन भी है। मैं प्रवेश करें बटन को छिपाने जब उपयोगकर्ता के लॉग in.My कोड यहाँ है:जेएस

<span id="signinButton"> 
    <span 
     class="g-signin" 
     data-callback="signinCallback" 
     data-clientid="******************" 
     data-cookiepolicy="single_host_origin" 
     data-requestvisibleactions="http://schema.org/AddAction" 
     data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email"> 
    </span> 
</span> &nbsp;&nbsp;&nbsp;&nbsp; 
<button id="revokeButton" onclick="gapi.auth.signOut()">Sign Out</button> 

<script> 
    function signinCallback(authResult) { 
     if (authResult['status']['signed_in']) { 
      document.getElementById('signinButton').setAttribute('style', 'display: none'); 
      console.log("User successfully logged in!!"); 
     } else { 
      console.log('Sign-in state: ' + authResult['error']); 
     } 
    } 
</script> 
<script> 
    function disconnectUser(access_token) { 
     var revokeUrl = 'https://accounts.google.com/o/oauth2/revoke?token=' + 
       access_token; 

     // Perform an asynchronous GET request. 
     $.ajax({ 
      type: 'GET', 
      url: revokeUrl, 
      async: false, 
      contentType: "application/json", 
      dataType: 'jsonp', 
      success: function(nullResponse) { 
       document.getElementById('signinButton').setAttribute('style', 'display: display'); 
       // The response is always undefined. 
       console.log("Success in logging out!"); 
      }, 
      error: function(e) { 
       // Handle the error 
       console.log(e); 
       // You could point users to manually disconnect if unsuccessful 
       // https://plus.google.com/apps 
      } 
     }); 
    } 
</script> 

समस्या जब मैं gapi.auth.signOut का उपयोग() प्रस्थान करने के लिए है ... यह मुझे लॉग आउट, लेकिन लॉग रीफ्रेश पर एक ही उपयोगकर्ता में Google+ पर फिर से। मैं अन्य लोगों को अपनी साइट पर लॉगिन करने की अनुमति कैसे दूं? मैं Google से लोगों को पूरी तरह से लॉगआउट कैसे करूं? मैं जावास्क्रिप्ट के लिए नया हूं ... एक उदाहरण मदद करेगा।

+0

क्या आप पेज लोड पर साइनइन फ़ंक्शन को कॉल कर रहे हैं? –

+0

नहीं .. केवल जब साइनइन बटन क्लिक किया जाता है..जब मैं बटन पर क्लिक करता हूं ... एक संवाद प्रकट होता है और असफल हो जाता है ... जिसका अर्थ है कि पिछला उपयोगकर्ता लॉग इन था। –

+0

मेरा पहला सवाल यह है: क्या आप अपना इरादा बनाना चाहते हैं उपयोगकर्ता को Google + में लॉग इन और आउट करने के लिए प्रॉक्सी साइट करें, या क्या आप अपनी साइट तक पहुंच के लिए खाता निर्माण को अधिकृत करने के तरीके के रूप में google + का उपयोग करना चाहते हैं? अगर मैं someSite.com पर गया, और google + के साथ लॉग इन किया, तो उस साइट से लॉग आउट हो गया, तो मुझे वास्तव में मेरे google + खाते से लॉग आउट होने की उम्मीद नहीं होगी। यह हो सकता है कि Google एक नियम लागू कर रहा है जैसे कि तृतीय पक्ष साइटें Google + से उपयोगकर्ताओं को लॉग नहीं कर सकती हैं। –

उत्तर

2

जवाब के रूप में मैं पता लगा सरल है। पहली बार उपयोगकर्ता लॉग इन करता है, वह मेरी साइट में लॉग इन नहीं है। तो जाहिर है कि उपयोगकर्ता को लॉग इन करना होगा। अगली बार पृष्ठ रीफ्रेश हो जाएगा ... Google+ जांचता है कि उपयोगकर्ता पहले से ही Google सेवाओं जैसे किसी भी जीमेल आदि में लॉग इन है .. और अगर उपयोगकर्ता सत्य है तो उपयोगकर्ता लॉग इन रखता है। यह जांचने के लिए कि क्या यह काम करता है ... अपनी किसी भी Google सेवा (जीमेल इत्यादि) से लॉग आउट करें और Google+ के साथ लॉग इन करने का प्रयास करें। यह प्रमाण पत्र मांगेगा। तो जब उपयोगकर्ता Google+ में लॉग इन करता है, तो उसे हर बार साइन-इन रखने की आवश्यकता नहीं होती है।

0

यह उत्तर एक मजाक है लेकिन आप https://accounts.google.com/Logout के src के साथ शरीर के छिपे हुए आइफ्रेम जोड़कर उपयोगकर्ता को अपने Google खाते से लॉग आउट करने की हैकी विधि क्यों नहीं चुनते?

यह X-Frame-Options को डेनी पर सेट करने के कारण प्रदर्शित करने से इंकार कर देगा लेकिन वास्तव में आपको लॉग आउट करेगा। jQuery के साथ

एक-लाइनर:

$('<iframe style="display: none" src="https://accounts.google.com/Logout"></iframe>').appendTo(document.body); 
+0

एक हैकी साइड-इफेक्ट पर भरोसा करने की अनुशंसा नहीं की जाती है। यह किसी भी समय ऐसी साइटों को छोड़ने पर काम करना बंद कर सकता है जो इसे तोड़ते हैं। – abraham

+0

बेशक नहीं। इसे एक मजाक के रूप में उल्लेख किया, समाधान के रूप में नहीं। ओपी को अपने सभी विकल्पों को जानना चाहिए। सिर्फ सही नहीं;) –