2015-04-23 5 views
16

Я пошел точно по инструкции по интеграции Google для входа в системе:TypeError: gapi.auth2 неопределенные

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

входа в работах, но знак отказ дает яваскрипт ошибку в строке:

var auth2 = gapi.auth2.getAuthInstance();

ошибка:

gapi.auth2 undefined

включает платформы Ли Google в соответствии с инструкцией:

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

Почему это не работает?

+0

У меня есть довольно минималистичный пример использования Google диск (который также требует проверки подлинности) в JavaScript. Весь образец полностью содержится на одной странице html из 170 строк: http://dannyruijters.nl/webtex/googledrive.html Возможно, это поможет вам решить вашу проблему. –

ответ

40

Подписчики и signOut используются на этой странице? Div g-signin2 загружает и inits gapi.auth2, поэтому он должен работать до тех пор, пока они находятся на одной странице.

В случае, если signOut находится на отдельной странице, вам необходимо вручную загрузить и занести библиотеку gapi.auth2.

Полный пример (Вы должны заменить YOUR_CLIENT_ID с фактическим 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-интерфейс загружается, поскольку он инкапсулирует все API-интерфейсы платформы Google (и, вероятно, считает, что нецелесообразно загружать их все) – Theson

+0

спасибо за решение ,, я долго застрял в этом – John

 Смежные вопросы

  • Нет связанных вопросов^_^