2016-03-09 5 views
5

गूगल के Integrate Google Sign-In पृष्ठ पर यह नीचे अनुभाग पता चलता है कि आप कैसे उपयोग कर उपयोगकर्ता हस्ताक्षर करने के लिए जावास्क्रिप्ट है:Google साइन इन एपीआई - मैं PHP के साथ किसी को कैसे लॉग आउट करूं?

<a href="#" onclick="signOut();">Sign out</a> 
<script> 
    function signOut() { 
    var auth2 = gapi.auth2.getAuthInstance(); 
    auth2.signOut().then(function() { 
     console.log('User signed out.'); 
    }); 
    } 
</script> 

मैं तलाश कर दिया गया है और मैं बाहर की तरह उपयोगकर्ता हस्ताक्षर करने के लिए एक तरह से नहीं मिल सकता है यह PHP का उपयोग कर।

मुझे पता चला कि उपयोगकर्ता को पूरी तरह से Google से कैसे साइन आउट करना है, लेकिन मुझे वह नहीं चाहिए। मुझे यह भी पता है कि मैं $_SESSION वैरिएबल को हटा सकता हूं जिसमें एक्सेस कोड है, लेकिन यह अभी भी पूरी तरह से नहीं है जो मैं चाहता हूं।

क्या कोई जानता है कि मैं PHP का उपयोग करके अपने Google एप्लिकेशन से किसी को कैसे लॉग कर सकता हूं?

उत्तर

1

यह काम करना चाहिए, मैं मार्क के साथ समस्या तय गिनी का कोड, जो तथ्य था कि gapi.auth2.init(); विधि के कार्य निष्पादित नहीं किए गए थे। .next() 'इस मुद्दे को हल किया।

<?php 
    session_start(); 
    session_unset(); 
    session_destroy(); 
?> 
<html> 
    <head> 
     <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
    </head> 
    <body> 
     <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 
     <script> 
      window.onLoadCallback = function(){ 
       gapi.load('auth2', function() { 
        gapi.auth2.init().then(function(){ 
         var auth2 = gapi.auth2.getAuthInstance(); 
         auth2.signOut().then(function() { 
          document.location.href = 'login.php'; 
         }); 
        }); 
       }); 
      }; 
     </script> 
    </body> 
</html> 
0

जावास्क्रिप्ट आपके लिए अलग डोमेन के लिए कुकीज में हेरफेर करने का एकमात्र तरीका है।

+0

तो उपर्युक्त स्क्रिप्ट सिर्फ कुकी को हटा देती है? – krummens

0

यदि आप सर्वर पर auth2.signOut() पर उपयोगकर्ता को साइन आउट करना चाहते हैं, तो check out this code (हालांकि यह पाइथन है, आपको विचार प्राप्त करना चाहिए)।

app.signOut = function() { 
    // Get `GoogleAuth` instance 
    var auth2 = gapi.auth2.getAuthInstance(); 
    // Sign-Out 
    fetch('/signout', { 
    method: 'POST', 
    credentials: 'include' 
    }).then(function(resp) { 
    if (resp.status === 200) { 
     auth2.signOut() 
     .then(changeProfile); 
    } else { 
     console.error("couldn't sign out"); 
    } 
    }).catch(function(error) { 
    console.error(error); 
    }); 
}; 

And this one

@app.route('/signout', methods=['POST']) 
def signout(): 
    # Terminate sessions 
    session.pop('id', None) 

    return make_response('', 200) 

यह कैसे आप सत्र की संरचना लेकिन आप signOut() से पहले सर्वर से ajax अनुरोध भेज सकते हैं पर निर्भर करता है।

0

चेक इस यह आप के लिए काम करेंगे

header('Location:https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.domain.com'); 
+0

जो उपयोगकर्ता को Google से लॉग आउट करता है। मैं नहीं चाहता कि – krummens

-1

आप क्यों नहीं बस इस तरह अपने प्रस्थान करें स्क्रिप्ट देखो कुछ है नहीं है:

<?php 
session_start(); 
session_unset(); 
session_destroy(); 
?> 
<html> 
    <head> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
    </head> 
    <body> 
    <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 
    <script> 
     window.onLoadCallback = function(){ 
     gapi.load('auth2', function() { 
      gapi.auth2.init(); 
      var auth2 = gapi.auth2.getAuthInstance(); 
      auth2.signOut().then(function() { 
      document.location.href = 'login.php'; 
      }); 
     }); 
     }; 
    </script> 
    </body> 
</html> 
+0

जावास्क्रिप्ट कंसोल में एक त्रुटि होती है: 'संदर्भ त्रुटि: चर नहीं मिल सकता: gap' – krummens

+0

क्या आप google api लोड कर रहे हैं? और क्या आपने window.load या पहले से हैंडलर का उपयोग करने के अपने सुझाव की कोशिश की? –

+0

हाँ, मैं google api लोड कर रहा हूं। – krummens

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