Соединители сообщества поддерживают следующие методы аутентификации:
- OAuth 2.0
- Путь/Имя пользователя/Пароль
- Путь/Ключ
- Имя пользователя/Пароль
- Имя пользователя/токен
- Ключ
- Никто
В зависимости от того, какой метод вы используете, вам необходимо предоставить дополнительные функции в вашем коннекторе.
В следующей таблице указано, какие функции необходимо определить в зависимости от типа аутентификации вашего коннектора.
OAUTH2 | PATH_USER_PASS PATH_KEY USER_PASS USER_TOKEN КЛЮЧ | НИКТО | |
---|---|---|---|
getAuthType() | необходимый | необходимый | необходимый |
resetAuth() | необходимый | необходимый | |
isAuthValid() | необходимый | необходимый | |
authCallback() | необходимый | ||
get3PAuthorizationUrls() | необходимый | ||
setCredentials() | необходимый |
getAuthType()
Эта функция должна возвращать тип аутентификации для коннектора.
OAUTH2
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();
}
PATH_KEY
/**
* 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();
}
USER_PASS
USER_TOKEN
КЛЮЧ
НИКТО
resetAuth()
Эта функция очистит все учетные данные, сохраненные для пользователя в сторонней службе.
OAUTH2
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');
}
PATH_KEY
/**
* Resets the auth service.
*/
function resetAuth() {
var userProperties = PropertiesService.getUserProperties();
userProperties.deleteProperty('dscc.path');
userProperties.deleteProperty('dscc.key');
}
USER_PASS
USER_TOKEN
КЛЮЧ
isAuthValid()
Эта функция вызывается для проверки корректности аутентификации для стороннего сервиса. Если аутентификация корректна, то ожидается, что вызовы getData()
и getSchema()
не будут завершаться ошибкой из-за несанкционированного доступа. Если аутентификация некорректна, пользователь может получить уведомление о необходимости начать процесс авторизации.
OAUTH2
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);
}
PATH_KEY
/**
* 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);
}
USER_PASS
USER_TOKEN
КЛЮЧ
OAUTH2
Добавьте и настройте OAuth2 для библиотеки скриптов приложений
Следуйте инструкциям по настройке библиотеки OAuth2 for Apps Script, чтобы добавить её в свой проект коннектора. Затем выполните первый шаг в руководстве по использованию , чтобы создать службу OAuth2 в своём проекте коннектора. Служба OAuth2 может иметь любое допустимое имя функции, но обязательно используйте то же имя при обращении к службе OAuth2 в своём коде.
Например, служба OAuth2 с именем exampleService
:
authCallback()
Эта функция вызывается для завершения процесса OAuth 2.0. Ответ обратного вызова от стороннего сервиса аутентификации предоставляется в качестве аргумента и должен быть обработан этой функцией.
Пример обработки обратного вызова OAuth 2.0 с использованием библиотеки скриптов OAuth2 for Apps:
get3PAuthorizationUrls()
Эта функция вызывается для получения URL-адреса, необходимого для инициирования процесса аутентификации для сторонней службы. Если isAuthValid
возвращает false
, то возвращённый URL-адрес будет отображаться пользователю в виде кнопки или ссылки, позволяющей авторизовать доступ к сторонней службе. См. описание функции get3PAuthorizationUrls() .
Пример возврата URL-адреса авторизации с использованием библиотеки OAuth2 for Apps Script:
USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
и PATH_KEY
Следующее необходимо только для потоков аутентификации USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
и PATH_KEY
.
setCredentials()
setCredentials
вызывается после того, как пользователь вводит свои учетные данные на странице настройки коннектора сообщества. Для сохранения учетных данных для каждого пользователя с помощью UserProperties
следует использовать службу Properties Service .
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'
};
}
PATH_KEY
/**
* 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'
};
}