2013-09-24 22 views
7

Web sitem için G + oturum açmayı kullanıyorum ve bu sorunu buldum.G + oturum açma düğmesi iki kez geri arama bağlanıyorum

Web sitem araç çubuğu vardır (onun JavaScript ile oluşturma) ve üzerinde G + giriş butonu yüzden araç çubuğu dosyası

[araç çubuğu-notlogin.php]

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

function render() 
{ 
     var config = { 
      "callback": "loginCallback", 
      "clientid": "xxxxxxxxx.apps.googleusercontent.com", 
      "cookiepolicy": "single_host_origin", 
      "requestvisibleactions": "http://schemas.google.com/AddActivity", 
      "scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email" 
      }; 

      $('#googleCustomLoginBtn .buttonText').text('Login with Google'); 
      gapi.signin.render ("gplusLoginBtn", config); 
     } 
</script> 

G + JavaScript API takmak araç çubuğu (G + JS API ile), G + oturum açma düğmesini oluşturmak için geri arama işlevi render() işlevini çağırdı. Çok iyi çalışıyor, bu yüzden araç çubuğum giriş durumuna (kullanıcı profilini göster) ve G + oturum açma düğmesine (HTML değiştirildi) dönüştü.

Kullanıcı oturumu kapattığında, araç çubuğu oturum açmama durumunu değiştirir (HTML değiştirilir), tekrar render() işlevini çağırır ve oturum açma düğmesi çalışır.

Ancak, bu sefer iki kez olarak adlandırılan geri arama işlevi (loginCallback()) oturum açarken sorunudur. Geri arama işlevi yeniden bağlanmış gibi görünüyor. (ikinci kez render() öğesini çağırmamaya çalışıyorum ama işaret düğmesi çalışmıyor.)

Düzeltmek için herhangi bir yol var mı? Teşekkür ederim.

+0

tüm fonksiyonlar çalıştırılır sırayı kontrol denediniz böyle

şey? Her işlevin başlangıcında işlev ismini sadece konsola vermekle yapmak oldukça kolay. Size (ve bana) tam olarak neyin nefret ettiği hakkında biraz daha içgörü verir. Ayrıca: jsfiddle.net demosu oluşturabilir misiniz? Bu şekilde size yardımcı olacak bir kod bulmaya çalışabiliriz. – Korijn

+0

Bunu çözdünüz mü? Eğer evet ise, çözümü paylaşır mısınız? –

+1

Bunun nedeni, Google’ın Google + 'ya bağlandığınızda otomatik olarak oturum açmayı denemesi ve daha önce uygulamayı yetkilendirmesi olabilir. Hesabınızı çıkış yaparak gizli olarak test etmeyi deneyin. –

cevap

1

Burada biraz acemi var ama bir yerde okumayı hatırlıyorum, yanlışlıkla birden fazla öğeye bağlı olduğunuzdan, bir kereden fazla işlevi çağırmak istediğiniz durumlar olabilir. Olay işleyicisini bildirmeden önce doğrudan kaldırmayı denediniz mi?

Bu şekilde, zaten bir örneği varsa, başka bir tane eklemeden önce kaldırılır.

$('#randomID').unbind('submit').bind('submit'); 
İlgili konular