2015-07-10 80 views
2

我有拿谷歌登入在我的網站:如何調用getBasicProfile()的谷歌登錄只有按鈕點擊谷歌?

<script src="https://apis.google.com/js/platform.js" async defer></script> 

<script> 
    function onSignIn(googleUser) { 
     var profile = googleUser.getBasicProfile(); 
     //console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead. 
     //console.log('Image URL: ' + profile.getImageUrl()); 
     //console.log('Name: ' + profile.getName()); 
     //console.log('Email: ' + profile.getEmail()); 
     var user_uname = profile.getName(); 
     var user_email = profile.getEmail(); 
     alert(user_uname); 
    } 

</script> 

,這裏是一個按鈕登錄谷歌:

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

我想給用戶谷歌登入,但問題是,每當頁面加載onSignIn()函數會自動調用。 我只需要點擊按鈕。有誰能夠幫助我?

回答

2

最好的解決辦法是呈現登錄按鈕,只有當用戶沒有登錄。

<html> 
<head> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
</head> 
<body> 
    <script> 
    function onSignIn(googleUser) { 
     var profile = googleUser.getBasicProfile(); 
     var user_name = profile.getName(); 
     alert(user_name); 
    } 

    function onLoad() { 
     gapi.load('auth2,signin2', function() { 
     var auth2 = gapi.auth2.init(); 
     auth2.then(function() { 
      // Current values 
      var isSignedIn = auth2.isSignedIn.get(); 
      var currentUser = auth2.currentUser.get(); 

      if (!isSignedIn) { 
      // Rendering g-signin2 button. 
      gapi.signin2.render('google-signin-button', { 
       'onsuccess': 'onSignIn' 
      }); 
      } 
     }); 
     }); 
    } 
    </script> 

    <div id="google-signin-button"></div> 

    <script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script> 
</body> 
</html> 
1

我通過聲明全局JS變量做了假

var isFirstGoogle = 0; 

那就要檢查一下這個變量

if(isFirstGoogle) 
{ 
//wont enter here first time 
} 
isFirstGoogle = 1; 

所以下次當我點擊按鈕時,上面的方法將被稱爲現在isFirstGoogle = 1;

希望這個幫助!這是我知道的暫時的事情,但它對我有用。

0

只是改變這一行:

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

到:

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

它單曲應該幫助...