Соединители сообщества поддерживают следующие методы аутентификации:
- 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'
  };
}