У меня есть функция initClient (), которая не срабатывает, когда на странице есть кнопка class = 'g-signin2'.Я предполагаю, что моя ошибка заключается в смешении двух разных методов аутентификации Google на одной странице.Но я не уверен, как правильно инициализировать gapi.client с помощью кнопки g-signin2.
Страница:
<!DOCTYPE html>
<html>
<head>
<meta name="google-signin-scope" content="profile email drive" />
<meta name="google-signin-client_id" content="[...].apps.googleusercontent.com">
<script async defer src="https://apis.google.com/js/platform.js?onload=handleClientLoad"></script>
<script type="text/javascript">
var CLIENT_ID = '[...].apps.googleusercontent.com';
var API_KEY = '[...]';
var DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"];
var SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly';
function handleClientLoad() {
gapi.load('client:auth2', initClient);
}
function initClient() {
gapi.client.init({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: DISCOVERY_DOCS,
scope: SCOPES
}).then(function () {
console.log("one of those sign-in state changes");
gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
}, function(error) {
appendPre(JSON.stringify(error, null, 2));
});
}
function updateSigninStatus(isSignedIn) {
if (isSignedIn) {
listFiles();
}
}
function listFiles() {
gapi.client.drive.files.list({
'pageSize': 10,
'fields': "nextPageToken, files(id, name)"
}).then(function(response) {
console.log(response.result.files);
});
}
function onSignIn(googleUser) {
console.log("Logged in as: " + googleUser.getBasicProfile().getEmail());
}
</script>
</head>
<body>
<div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div>
</body>
</html>
Простое удаление класса g-siginin2 изКнопка позволяет initClient выполнять и запускать listFiles (), но я полагаюсь на кнопку «g-signin2» для запуска других функций с помощью onSignIn.С этим кодом, как есть, initClient никогда не будет работать.
Как правильно это сделать?