Los conectores de comunidad admiten los siguientes métodos de autenticación:
- OAuth 2.0
- Ruta/nombre de usuario/contraseña
- Ruta/clave
- Nombre de usuario y contraseña
- Nombre de usuario/token
- Clave
- Ninguno
Según el método que uses, debes proporcionar funciones adicionales en el conector.
En la siguiente tabla, se indican las funciones que debes definir según los el tipo de autenticación del conector.
OAUTH2 | PATH_USER_PASS PATH_KEY USER_PASS USER_TOKEN KEY |
NINGUNO | |
---|---|---|---|
getAuthType() |
obligatorio | obligatorio | obligatorio |
resetAuth() |
obligatorio | obligatorio | |
isAuthValid() |
obligatorio | obligatorio | |
authCallback() |
obligatorio | ||
get3PAuthorizationUrls() |
obligatorio | ||
setCredentials() |
obligatorio |
getAuthType()
Esta función debería mostrar el tipo de autenticación del conector.
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
CLAVE
NINGUNO
resetAuth()
Esta función borrará todas las credenciales almacenadas para el usuario del tercero servicio.
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
CLAVE
isAuthValid()
Se llama a esta función para determinar si la autenticación para el servidor
servicio sea válido. Si la autenticación es válida, se espera que las llamadas a
getData()
y getSchema()
no fallarán debido a
de accesos no autorizados. Si la autenticación no es válida, el usuario podría recibir un
para iniciar el flujo de autorización.
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
CLAVE
OAUTH2
Agrega y configura OAuth2 para la biblioteca de Apps Script
Sigue las instrucciones de configuración de OAuth2 para Apps Script. para agregarla a tu proyecto de conector. Luego, sigue el primer paso de la guía de uso para crear un servicio de OAuth2 en tu conector en un proyecto final. Tu servicio de OAuth2 puede tener cualquier nombre de función válido, pero asegúrate de utiliza el mismo nombre cuando hagas referencia al servicio de OAuth2 en tu código.
Por ejemplo, un servicio de OAuth2 llamado exampleService
:
authCallback()
Se llama a esta función para completar el flujo de OAuth 2.0. La respuesta de devolución de llamada del servicio de autenticación de terceros se proporciona como un argumento y debe manejadas por esta función.
Ejemplo de manejo de la devolución de llamada de OAuth 2.0 con OAuth2 para Apps Script biblioteca:
get3PAuthorizationUrls()
Se llama a esta función para obtener la URL necesaria a fin de iniciar la autenticación
para el servicio de terceros. Si isAuthValid
muestra false
, entonces la URL
se mostrará al usuario como un botón o vínculo para que pueda
autorizan el acceso al servicio de terceros. Consulta la referencia para
get3PAuthorizationUrls().
Ejemplo de muestra de la URL de autorización con OAuth2 para Apps Script biblioteca:
USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
y PATH_KEY
Lo siguiente solo es necesario para USER_PASS
, USER_TOKEN
, KEY
,
PATH_USER_PASS
y PATH_KEY
.
setCredentials()
Se llama a setCredentials
después de que el usuario ingresa su credencial.
en la página de configuración del conector de comunidad. Deberías usar el
Servicio de propiedades para guardar las credenciales de una cuenta por usuario
con 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'
};
}
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'
};
}