2017-03-17 374 views
0

我正在將Google登錄集成到我的網絡應用中。我遵循here的指示。但是我無法從登錄中獲取任何用戶信息。登錄按鈕雖然工作得很好。網絡應用Google登錄

<meta name="google-signin-client_id" content="3*****-c*******************.apps.googleusercontent.com"> 
<script src="https://apis.google.com/js/platform.js" async defer></script> 

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

我使用這些JavaScript函數:

if (auth2.isSignedIn.get()) { 
     var profile = auth2.currentUser.get().getBasicProfile(); 
     console.log('ID: ' + profile.getId()); 
     console.log('Full Name: ' + profile.getName()); 
     console.log('Given Name: ' + profile.getGivenName()); 
     console.log('Family Name: ' + profile.getFamilyName()); 
     console.log('Image URL: ' + profile.getImageUrl()); 
     console.log('Email: ' + profile.getEmail()); 
     email=profile.getEmail(); 
     } 
    } 

此功能將導致一個錯誤:auth2沒有定義。 如果我在函數之前使用window.onLoadCallback = function(),那麼它在日誌中不會發生錯誤,也不會發生任何錯誤。如果我只用這個代替:

function onSignIn(googleUser) { 
     var id_token = googleUser.getAuthResponse().id_token; 
     console.log("done"); 
    } 

再次我得到沒有錯誤,但也沒有在控制檯日誌中。

回答

0

將此代碼放在if(auth2.isSignedIn.get())之前。嘗試運行它。

gapi.load('auth2', function() { 
    auth2 = gapi.auth2.init(); 

    // Sign the user in, and then retrieve their ID. 
    auth2.signIn().then(function() { 
     console.log(auth2.currentUser.get().getId()); 
    }); 
}); 
+1

這個錯誤,現在來了:'未捕獲的對象{錯誤:「popup_closed_by_user」}' 我不關閉任何彈出窗口。只要點擊Google登錄按鈕後彈出窗口登錄到我的帳戶,就會發生錯誤。如果我已經登錄,那麼一旦我加載頁面,錯誤就會出現。 –

+0

嘿!它適用於我允許彈出式窗口。但是用戶的瀏覽器默認不會啓用此功能。現在,只要頁面加載而沒有點擊登錄按鈕,登錄彈出即會出現。 –

+0

調用'auth2.signIn()'將加載當前會話或彈出選擇賬戶屏幕(如果不存在按設計的會話)。您可以在調用signIn()之前檢查會話是否存在,以避免彈出:'if(auth2.isSignedIn.get()){auth2.signIn(); }'。也就是說,如果它存在,加載會話,否則,延遲調用'signIn()'直到必要。 –