Я пишу коннектор для Datastudio и решил go для аутентификации по имени пользователя и паролю. Мои функции isAuthValid, setCredentials и getAuthType:
var cc = DataStudioApp.createCommunityConnector();
function isAuthValid() {
const properties = PropertiesService.getUserProperties();
const username = properties.getProperty('dscc.username');
const password = properties.getProperty('dscc.password');
console.log(username);
console.log(password);
return !!(username && password);
}
function setCredentials(request) {
const isCredentialsValid = !!(request.userPass.username && request.userPass.password);
console.log('username: ' + request.userPass.username);
console.log('password: ' + request.userPass.password);
if (!isCredentialsValid) {
return {
errorCode: "INVALID_CREDENTIALS"
};
}
PropertiesService.getUserProperties()
.setProperty('dscc.username', request.userPass.username)
.setProperty('dscc.password', request.userPass.password);
return {
errorCode: "NONE"
};
};
function getAuthType() {
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.USER_PASS)
.build();
}
function resetAuth() {
const userProperties = PropertiesService.getUserProperties();
userProperties.deleteProperty('dscc.username');
userProperties.deleteProperty('dscc.password');
}
Он работает, но почти всегда после первой попытки снова появляется экран пароля для входа.
В журналах я вижу, что setCredentials вызывается с правильные аргументы, а затем isAuthValid с именем пользователя и паролем, равными нулю. После второй попытки isAuthValid вызывается правильно с ожидаемыми аргументами.
Кто-нибудь знает, почему он так себя ведет?