2015-04-20 31 views
6

AngularJS uygulamamı google oturum açma ile bağlamak için this tutorial'u okudum. Kafanın içindeBir AngularJS uygulamasında google kullanıcısıyla oturum açın

Ben meta etiketi eklenir:

<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com"> 

Ve sonra düğmeye kendisi ekledi:

<div class="g-signin2" data-onsuccess="onSignIn"></div> 

(sadece öğretici yapıştırmayı kopya) aşağıdaki gibi google düğmesi ekledik İlk başta onSignIn yöntemini kopyaladım (bu sadece genel bir işleyicidir, bu yüzden soruya kopyalamıyorum) ve bir <script>...</script> etiketine koydum ve işe yaradı. Şimdi bu yöntemi bir Açısal denetleyiciye koymak istiyorum. Bu yüzden aşağıdaki gibi bir denetleyici yarattı:

app.controller('GoogleCtrl', function() { 
    function onSignIn(googleUser) { 
    var profile = googleUser.getBasicProfile(); 
    console.log('ID: ' + profile.getId()); 
    console.log('Name: ' + profile.getName()); 
    console.log('Image URL: ' + profile.getImageUrl()); 
    console.log('Email: ' + profile.getEmail()); 
    } 
} 

Ve bir div ile düğmeye sarılmış:

<div ng-controller="GoogleCtrl"> 
    <div class="g-signin2" data-onsuccess="onSignIn"></div> 
</div> 

Kodum şimdi onSignIn yönteme almaz ve ben anlamaya çalıştığım şey yapabilir miyim.

+3

değiştirir 'onSignIn' pencere nesne üzerinde bir işlevi vardır pencerede dinleyici ekleyebilirsiniz denetleyici – maurycy

+0

@maurycy - Teşekkürler! İtiraf etmeliyim ki, JS konusunda çok yetkin değilim ve yorumunuzu nasıl anladığımı veya nasıl kullanacağımı tam olarak bilmiyorum. – Avi

cevap

15

- Kumandanızda gelen işlev Eğer sandık gerekecektir aynı davranışı sahip olmak şimdi, tarayıcınızın JS konsolunda çalıştırmayı deneyin

app.controller('GoogleCtrl', function() { 
    function onSignIn(googleUser) { 
    var profile = googleUser.getBasicProfile(); 
    console.log('ID: ' + profile.getId()); 
    console.log('Name: ' + profile.getName()); 
    console.log('Image URL: ' + profile.getImageUrl()); 
    console.log('Email: ' + profile.getEmail()); 
    } 


    window.onSignIn = onSignIn; 
} 
kontrolör versiyonu sadece denetleyici içinde fonksiyon olarak adlandırılır iken

yüzden açısal $scope.$digest aramanız gerekmektedir onSignIn gibi 3 şahıs tarafından yürütülen bu kodu hatırlamak modelin farkındadır eğitimde

+0

Teşekkürler! Şimdi seni aldım. Ve $ digest aramaya ihtiyaç duyduğunuz için teşekkürler. Bu muhtemelen bana bir şeyler ekranda ekranda güncellenen olmadığını anlamak için bir yarım gün kurtardı :) – Avi

+1

Bu güvenli bir tarafta olmak için çok sık bir sorun olur Bu yüzden daha iyi baş-up – maurycy

+0

Ben de aynı Sorun ve aynı çözümü uyguladı, ancak şimdi googleUser.getAuthResponse tanımlanmadı. Dinleyici işlevini de paylaşabilir misiniz? – artdias90

1

Kodunuza bakarak, işlevinize dinleyici eklemek zorunda kalabilirsiniz. İşleri basit tutmak için, bu eklenti ile uygulamanızda google girişini kolayca entegre edebilirsiniz. Eğer window. onSignIn olduğu ile sona erecek neler talimatları izleyin https://github.com/sahat/satellizer

+0

İlginç görünüyor. Bunu kontrol edeceğim. Teşekkürler! – Avi

İlgili konular