Соединители сообщества поддерживают следующие методы аутентификации:
- ОАутентификация 2.0
- Путь/имя пользователя/пароль
- Путь/Ключ
- Имя пользователя/пароль
- Имя пользователя/токен
- Ключ
- Никто
В зависимости от того, какой метод вы используете, вы должны предоставить в коннекторе дополнительные функции.
В следующей таблице указано, какие функции необходимо определить в зависимости от типа аутентификации вашего соединителя.
ОАУТ2 | PATH_USER_PASS ПУТЬ_КЛЮЧ ПОЛЬЗОВАТЕЛЬ_ПАРОЛЬ ПОЛЬЗОВАТЕЛЬ_ТОКЕН КЛЮЧ | НИКТО | |
---|---|---|---|
getAuthType() | необходимый | необходимый | необходимый |
resetAuth() | необходимый | необходимый | |
isAuthValid() | необходимый | необходимый | |
authCallback() | необходимый | ||
get3PAuthorizationUrls() | необходимый | ||
setCredentials() | необходимый |
getAuthType()
Эта функция должна возвращать тип аутентификации для соединителя.
ОАУТ2
PATH_USER_PASS
/**
* Returns the Auth Type of this connector.
* @return {object} The Auth type.
*/
function getAuthType() {
var cc = DataStudioApp.createCommunityConnector();
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.PATH_USER_PASS)
.setHelpUrl('https://www.example.org/connector-auth-help')
.build();
}
ПУТЬ_КЛЮЧ
/**
* Returns the Auth Type of this connector.
* @return {object} The Auth type.
*/
function getAuthType() {
var cc = DataStudioApp.createCommunityConnector();
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.PATH_KEY)
.setHelpUrl('https://www.example.org/connector-auth-help')
.build();
}
ПОЛЬЗОВАТЕЛЬ_ПАРОЛЬ
ПОЛЬЗОВАТЕЛЬ_ТОКЕН
КЛЮЧ
НИКТО
resetAuth()
Эта функция очистит все учетные данные, сохраненные для пользователя в сторонней службе.
ОАУТ2
PATH_USER_PASS
/**
* Resets the auth service.
*/
function resetAuth() {
var userProperties = PropertiesService.getUserProperties();
userProperties.deleteProperty('dscc.path');
userProperties.deleteProperty('dscc.username');
userProperties.deleteProperty('dscc.password');
}
ПУТЬ_КЛЮЧ
/**
* Resets the auth service.
*/
function resetAuth() {
var userProperties = PropertiesService.getUserProperties();
userProperties.deleteProperty('dscc.path');
userProperties.deleteProperty('dscc.key');
}
ПОЛЬЗОВАТЕЛЬ_ПАРОЛЬ
ПОЛЬЗОВАТЕЛЬ_ТОКЕН
КЛЮЧ
isAuthValid()
Эта функция вызывается, чтобы определить, действительна ли аутентификация для стороннего сервиса. Если аутентификация действительна, ожидается, что вызовы getData()
и getSchema()
не завершатся ошибкой из-за несанкционированного доступа. Если аутентификация недействительна, пользователь может получить уведомление о запуске процесса авторизации.
ОАУТ2
PATH_USER_PASS
/**
* Returns true if the auth service has access.
* @return {boolean} True if the auth service has access.
*/
function isAuthValid() {
var userProperties = PropertiesService.getUserProperties();
var path = userProperties.getProperty('dscc.path');
var userName = userProperties.getProperty('dscc.username');
var password = userProperties.getProperty('dscc.password');
// This assumes you have a validateCredentials function that
// can validate if the path, userName and password are correct.
return validateCredentials(path, userName, password);
}
ПУТЬ_КЛЮЧ
/**
* Returns true if the auth service has access.
* @return {boolean} True if the auth service has access.
*/
function isAuthValid() {
var userProperties = PropertiesService.getUserProperties();
var path = userProperties.getProperty('dscc.path');
var key = userProperties.getProperty('dscc.key');
// This assumes you have a validateCredentials function that
// can validate if the path and key are correct.
return validateCredentials(path, key);
}
ПОЛЬЗОВАТЕЛЬ_ПАРОЛЬ
ПОЛЬЗОВАТЕЛЬ_ТОКЕН
КЛЮЧ
OAUTH2
Добавьте и настройте OAuth2 для библиотеки сценариев приложений.
Следуйте инструкциям по настройке библиотеки сценариев OAuth2 для приложений, чтобы добавить ее в проект соединителя. Затем выполните первый шаг руководства по использованию , чтобы создать службу OAuth2 в проекте соединителя. Ваша служба OAuth2 может иметь любое допустимое имя функции, но обязательно используйте то же имя при ссылке на службу OAuth2 в своем коде.
Например, служба OAuth2 с именем exampleService
:
authCallback()
Эта функция вызывается для завершения потока OAuth 2.0. Ответ обратного вызова от сторонней службы аутентификации предоставляется в качестве аргумента и должен обрабатываться этой функцией.
Пример обработки обратного вызова OAuth 2.0 с использованием библиотеки сценариев OAuth2 для приложений:
get3PAuthorizationUrls()
Эта функция вызывается для получения URL-адреса, необходимого для инициации потока аутентификации для сторонней службы. Если isAuthValid
возвращает false
, то возвращенный URL-адрес будет отображаться пользователю в виде кнопки или ссылки, чтобы он мог авторизовать доступ к сторонней службе. См. ссылку на get3PAuthorizationUrls() .
Пример возврата URL-адреса авторизации с использованием библиотеки сценариев OAuth2 для приложений:
USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
и PATH_KEY
Следующее необходимо только для потоков аутентификации USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
и PATH_KEY
.
setCredentials()
setCredentials
вызывается после того, как пользователь вводит свои учетные данные на странице конфигурации соединителя сообщества. Вам следует использовать Службу свойств для сохранения учетных данных для каждого пользователя с помощью UserProperties
.
PATH_USER_PASS
/**
* Sets the credentials.
* @param {Request} request The set credentials request.
* @return {object} An object with an errorCode.
*/
function setCredentials(request) {
var creds = request.pathUserPass;
var path = creds.path;
var username = creds.username;
var password = creds.password;
// Optional
// Check if the provided path, username and password are valid through
// a call to your service. You would have to have a `checkForValidCreds`
// function defined for this to work.
var validCreds = checkForValidCreds(path, username, password);
if (!validCreds) {
return {
errorCode: 'INVALID_CREDENTIALS'
};
}
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty('dscc.path', path);
userProperties.setProperty('dscc.username', username);
userProperties.setProperty('dscc.password', password);
return {
errorCode: 'NONE'
};
}
ПУТЬ_КЛЮЧ
/**
* Sets the credentials.
* @param {Request} request The set credentials request.
* @return {object} An object with an errorCode.
*/
function setCredentials(request) {
var creds = request.pathKey;
var path = creds.path;
var key = creds.key;
// Optional
// Check if the provided path and key are valid through
// a call to your service. You would have to have a `checkForValidCreds`
// function defined for this to work.
var validCreds = checkForValidCreds(path, key);
if (!validCreds) {
return {
errorCode: 'INVALID_CREDENTIALS'
};
}
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty('dscc.path', path);
userProperties.setProperty('dscc.key', key);
return {
errorCode: 'NONE'
};
}