2013-06-13 11 views
8

पर क्लिक करते समय Google प्लस कॉलबैक फ़ंक्शन को कॉल करना चाहता हूं, मैंने अपनी परियोजना [कोडइग्निटर में निर्मित] में Google प्लस बटन का उपयोग किया है। यहां मैंने निम्नलिखित कोड जोड़ा है।मैं Google प्लस बटन

<span id="signinButton"> 
    <span 
    class="g-signin gooConnect" 
    data-callback="signinCallback" 
    data-clientid="my_project_client_id" 
    data-cookiepolicy="single_host_origin" 
    data-requestvisibleactions="http://schemas.google.com/AddActivity" 
    data-scope="https://www.googleapis.com/auth/userinfo.email"> 
    </span> 
</span> 

फिर मैंने Google द्वारा प्रदान किया गया जावास्क्रिप्ट कोड जोड़ा।

<script type="text/javascript"> 
    (function() { 
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; 
    po.src = 'https://apis.google.com/js/client:plusone.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); 
    })(); 

    function signinCallback(authResult) { 
    if (authResult['access_token']) { 
     $.ajax({ 
     url:base_url+'index.php/user/getUserProfile', 
     type:'POST', 
     data:{'access':authResult['access_token']}, 
     beforeSend : function(){ 
      $("#loadingImageBeforeResult").show('slow'); 
     }, 
     success : function(resp){ 
      $("#loadingImageBeforeResult").hide('slow'); 
      if(resp == 'exist'){ 
      window.location.href=base_url+'index.php/user/my_deals'; 
      } else { 
      $('#link_for_geniepage').trigger('click'); 
      } 
     }, 
     error : function(resp){} 
     }); 
    } else if (authResult['error']) { 
     // There was an error. 
     // Possible error codes: 
     // "access_denied" - User denied access to your app 
     // "immediate_failed" - Could not automatially log in the user 
     // console.log('There was an error: ' + authResult['error']); 
    } 
    } 
</script> 

यह मेरे लिए ठीक काम कर रहा है, लेकिन अगर मैं एक अलग टैब में मेरे Gmail खाते में प्रवेश करें और फिर मैं अपने Gmail पहचान के साथ अपना लॉगिन पेज, कॉलबैक फ़ंक्शन पर सिर्फ ऑटो लॉगिन जाने के लिए और मेरे डैशबोर्ड पर मुझे पुनर्निर्देश ।

मैं चाहता हूं कि जब तक कि मैं उस Google Plus बटन पर क्लिक नहीं करता, कॉलबैक फ़ंक्शन काम नहीं करना चाहिए। मैं यह कैसे कर सकता हूँ? क्रिप्या मेरि सहायता करे।

+0

ऐसा लगता है आप प्रवेश करें बटन को क्लिक करने कर रहे हैं, और साइन इन करें पर, यह आप पुराने टैब के लिए लाता है, लेकिन आप इसे एक ही टैब में प्रस्तुत करना चाहते हैं? –

+0

@ aritra-chakraborty चूंकि मुझे PHP से संबंध नहीं दिखते हैं, इसलिए मैंने आपके प्रश्न को दोबारा बदल दिया। – SteAp

+0

ठीक है ... धन्यवाद @ एसटीएपी ... क्या आप कृपया मुझे बता सकते हैं कि मैं यह कैसे कर सकता हूं। – ABorty

उत्तर

2

दस्तावेज़ों से, यह इस तरह से उपयोग किए जाने पर साइनइन बटन जैसा दिखता है, हमेशा तत्काल सत्यापन का प्रयास करेगा। चूंकि आप पहले ही Google में साइन इन हैं और ऐप को अधिकृत कर चुके हैं, इसलिए Google स्वचालित रूप से आपको साइन इन करता है और आपको अपने डैशबोर्ड पर भेजता है।

मैं सुझाव देता हूं कि नमूना कोड का उपयोग न करें। इसके बजाय, आप Google जावास्क्रिप्ट एपीआई के अन्य हिस्सों का उपयोग कर सकते हैं (https://developers.google.com/+/web/api/javascript) एक सामान्य साइन बटन वाला Google साइन इन बटन बनाएं। जब इसे क्लिक किया जाता है, तो उपयोगकर्ता को लॉग इन करने के लिए gapi.auth.authorize() पर कॉल करें। तब तक कुछ भी नहीं होता जब तक कि वे बटन पर क्लिक न करें, और जब वे करते हैं, तो यह या तो अनुमोदन/लॉगिन के लिए पूछता है या केवल उपयोगकर्ता को स्वचालित रूप से संकेत देता है।

+0

धन्यवाद @ रॉन मैं इसे लागू कर दूंगा और आपको बताऊंगा कि मुझे कोई समस्या है या नहीं। – ABorty

3

signinCallback(authResult) फ़ंक्शन में, आपको पहले यह जांचना चाहिए कि उपयोगकर्ता साइन इन है या नहीं और आपको जांच करनी चाहिए, यदि विधि मान AUTO या PROMPT है। PROMPT वही है जो आप चाहते हैं क्योंकि जब उपयोगकर्ता साइन-इन बटन पर क्लिक करता है तो उसे वापस कर दिया जाता है। कोड यह रहा:

function signinCallback(authResult) { 
    if (authResult['status']['signed_in'] && authResult['status']['method'] == 'PROMPT') { 
     // User clicked on the sign in button. Do your staff here. 
    } else if (authResult['status']['signed_in']) { 
     // This is called when user is signed in to Google but hasn't clicked on the button. 
    } else { 
     // Update the app to reflect a signed out user 
     // Possible error values: 
     // "user_signed_out" - User is signed-out 
     // "access_denied" - User denied access to your app 
     // "immediate_failed" - Could not automatically log in the user 
     console.log('Sign-in state: ' + authResult['error']); 
    } 
संबंधित मुद्दे