2015-04-23 131 views
16

我就完全按指令集成谷歌登入:類型錯誤:gapi.auth2未定義

https://developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id

登錄作品,但註銷給出了一個JavaScript錯誤在該行:

var auth2 = gapi.auth2.getAuthInstance();

的錯誤是:

gapi.auth2 undefined

我包括谷歌平臺裏請按照說明進行操作:

<script type='text/javascript' src='https://apis.google.com/js/platform.js' async defer></script> 

爲什麼它不起作用?

+0

我在JavaScript中使用谷歌驅動器(這也需要身份驗證)的相當簡約的例子。整個示例完全包含在一個包含170行的單個html頁面中:http://dannyruijters.nl/webtex/googledrive.html 也許可以幫助您解決問題。 –

回答

40

是否在同一頁上使用signIn和signOut? Div g-signin2加載並注入gapi.auth2,只要它們在同一頁面上,它就應該可以工作。

如果signOut位於單獨的頁面上,則應手動加載並初始化gapi.auth2庫。

完整的示例(你與你的實際CLIENT_ID更換YOUR_CLIENT_ID):

<html> 
<head> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
</head> 
<body> 
    <script> 
    function signOut() { 
     var auth2 = gapi.auth2.getAuthInstance(); 
     auth2.signOut().then(function() { 
     console.log('User signed out.'); 
     }); 
    } 

    function onLoad() { 
     gapi.load('auth2', function() { 
     gapi.auth2.init(); 
     }); 
    } 
    </script> 
    <a href="#" onclick="signOut();">Sign out</a> 

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

'gapi.load'記錄在任何地方嗎?它看起來並不是參考資料的一部分:https://developers.google.com/identity/sign-in/web/reference –

+0

@MicahZoltu同樣的觀點。我瘋狂的猜測,如果你的頁面上有'

''按鈕(所有的文檔示例),API將會爲你加載,因爲按鈕使用它,但是對於沒有按鈕的情況,你必須告訴' gapi'對象哪些API要加載,因爲它封裝了所有Google的平臺API(並且可能發現加載所有這些API是不明智的) – Theson

+0

感謝您的解決方案,,我被困在這裏很長時間 – John