Community-Connectors unterstützen die folgenden Authentifizierungsmethoden:
- oauth 2.0
- Pfad/Nutzername/Passwort
- Pfad/Schlüssel
- Nutzername/Passwort
- Nutzername/Token
- Schlüssel
- Keine
Je nach verwendeter Methode müssen Sie in Ihrem Connector zusätzliche Funktionen bereitstellen.
In der folgenden Tabelle sehen Sie, welche Funktionen Sie je nach Authentifizierungstyp Ihres Connectors definieren müssen.
OAUTH2 | PATH_USER_PASS PATH_KEY USER_PASS USER_TOKEN KEY |
KEINE | |
---|---|---|---|
getAuthType() |
erforderlich | erforderlich | erforderlich |
resetAuth() |
erforderlich | erforderlich | |
isAuthValid() |
erforderlich | erforderlich | |
authCallback() |
erforderlich | ||
get3PAuthorizationUrls() |
erforderlich | ||
setCredentials() |
erforderlich |
getAuthType()
Diese Funktion sollte den Authentifizierungstyp für den Connector zurückgeben.
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
SCHLÜSSEL
KEINE
resetAuth()
Durch diese Funktion werden alle Anmeldedaten gelöscht, die für den Nutzer für den Drittanbieterdienst gespeichert sind.
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
SCHLÜSSEL
isAuthValid()
Diese Funktion wird aufgerufen, um festzustellen, ob die Authentifizierung für den Drittanbieterdienst gültig ist. Wenn die Authentifizierung gültig ist, sollten Aufrufe von getData()
und getSchema()
nicht aufgrund von unberechtigtem Zugriff fehlschlagen. Wenn die Autorisierung nicht gültig ist, erhält der Nutzer möglicherweise eine Benachrichtigung, den Autorisierungsvorgang zu starten.
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
SCHLÜSSEL
OAUTH2
OAuth2 für Apps Script-Bibliothek hinzufügen und einrichten
Folgen Sie der Einrichtungsanleitung für die OAuth2 for Apps Script-Bibliothek, um sie Ihrem Connector-Projekt hinzuzufügen. Folgen Sie dann dem ersten Schritt im Leitfaden, um einen OAuth2-Dienst in Ihrem Connector-Projekt zu erstellen. Ihr OAuth2-Dienst kann einen beliebigen gültigen Funktionsnamen haben. Achten Sie jedoch darauf, dass Sie denselben Namen verwenden, wenn Sie in Ihrem Code auf den OAuth2-Dienst verweisen.
Beispiel: Ein OAuth2-Dienst namens exampleService
:
authCallback()
Diese Funktion wird aufgerufen, um den OAuth 2.0-Vorgang abzuschließen. Die Callback-Antwort vom Drittanbieter-Authentifizierungsdienst wird als Argument bereitgestellt und sollte von dieser Funktion verarbeitet werden.
Beispiel für die Verarbeitung des OAuth 2.0-Callbacks mit der OAuth2 for Apps Script-Bibliothek:
get3PAuthorizationUrls()
Diese Funktion wird aufgerufen, um die URL abzurufen, die zum Starten des Autorisierungsablaufs für den Drittanbieterdienst erforderlich ist. Wenn isAuthValid
den Wert false
zurückgibt, wird die zurückgegebene URL dem Nutzer als Schaltfläche oder Link angezeigt, damit er den Zugriff auf den Drittanbieterdienst autorisieren kann. Weitere Informationen finden Sie in der Referenz zu get3PAuthorizationUrls().
Beispiel für die Rückgabe der Autorisierungs-URL mit der OAuth2 for Apps Script-Bibliothek:
USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
und PATH_KEY
Das Folgende ist nur für die Authentifizierungsabläufe USER_PASS
, USER_TOKEN
, KEY
, PATH_USER_PASS
und PATH_KEY
erforderlich.
setCredentials()
setCredentials
wird aufgerufen, nachdem der Nutzer seine Anmeldedaten auf der Konfigurationsseite des Community-Connectors eingegeben hat. Sie sollten den Properties Service verwenden, um die Anmeldedaten mit UserProperties
pro Nutzer zu speichern.
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'
};
}