2013-06-13 22 views
8

tıklattığınızda Google Plus geri arama işlevini aramak istiyorum Projemde [CodeIgniter] yerleşik bir Google Plus düğmesi kullandım. Burada aşağıdaki kodu ekledim.Google Plus düğmesini

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

Ardından, Google tarafından sağlanan Javascript kodunu ekledim.

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

Benim için iyi çalışıyor, ama ben o zaman ayrı bir sekmede Gmail hesabımda oturum ve eğer Gmail kimlik bilgileriyle benim giriş sayfasında, geri çağırma işlevi sadece oto oturumların gidip kontrol paneline beni yönlendirir .

Bu Google Plus düğmesini tıklamadıkça, geri arama işlevinin çalışmaması gerekir. Bunu nasıl yapabilirim? Lütfen bana yardım et.

+0

ve içinde imzalanması konusunda, geri eski sekmesine getirir, ancak bunu aynı sekmede görüntülenmesini istediğiniz? –

+0

@ aritra-chakraborty PHP ile ilişki görmediğim için, sorunuzu yeniden etiketledim. – SteAp

+0

tamam ... teşekkür ederim @SteAp ... lütfen bunu nasıl yapabilirim söyler misiniz? – ABorty

cevap

2

Dokümanlardan, bu şekilde kullanıldığında, her zaman anında doğrulamaya çalışacak olan imza düğmesine benziyor. Google'da zaten oturum açtığınız ve uygulamayı yetkilendirdiğinden, google sizi otomatik olarak imzalar ve sizi gösterge tablonuza gönderir.

Bu örnek kodu kullanmamanızı öneririz. Bunun yerine, Google Javascript API'sinin diğer bölümlerini kullanabilirsiniz (https://developers.google.com/+/web/api/javascript) Normal bir düğme olan bir Google oturum açma düğmesine basın. Bu tıklandığında, kullanıcıyı oturum açmak için gapi.auth.authorize() numaralı telefonu arayın. Ardından düğmeyi tıklayana kadar hiçbir şey olmaz ve ne zaman isterse onaylama/oturum açma işlemi ister veya kullanıcıyı otomatik olarak imzalar.

+0

Teşekkürler @Ron uygulayacağım ve herhangi bir sorunla karşılaşıp karşılaşmadığımı size bildirin. – ABorty

3

signinCallback(authResult) işlevinde, kullanıcının oturum açıp açılmadığını önce kontrol etmeli ve ardından, yöntem değeri AUTO veya PROMPT ise, işaretlemelisiniz. PROMPT tam olarak ne istediğinizi, çünkü kullanıcı oturum açma düğmesine tıkladığında geri döner. İşte kod:

Eğer düğmesini işaretini tıklayarak gibi geliyor
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']); 
    }