Я создаю коннектор Google Data Studio для стороннего источника, Siteimprove.Siteimprove имеет API, который требует Basic Access Authentication .
Я установил аутентификацию для имени пользователя и токена (я также пробовал имя пользователя и пароль) в моемСценарий Google Apps, со всеми необходимыми функциями, основанными на документации
-edit- в соответствии с запросом полного кода для этих функций
/**
* Returns the Auth Type of this connector.
* @return {object} The Auth type.
*/
function getAuthType() {
var cc = DataStudioApp.createCommunityConnector();
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.USER_TOKEN)
.setHelpUrl('http://developer.siteimprove.com/v1/get-access/')
.build();
}
/**
* Resets the auth service.
*/
function resetAuth() {
var user_tokenProperties = PropertiesService.getUserProperties();
user_tokenProperties.deleteProperty('dscc.username');
user_tokenProperties.deleteProperty('dscc.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 userName = userProperties.getProperty('dscc.username');
var token = userProperties.getProperty('dscc.token');
// This assumes you have a validateCredentials function that
// can validate if the userName and token are correct.
return validateCredentials(userName, token);
}
/**
* Sets the credentials.
* @param {Request} request The set credentials request.
* @return {object} An object with an errorCode.
*/
function setCredentials(request) {
var creds = request.userToken;
var username = creds.username;
var token = creds.token;
// Optional
// Check if the provided username and token are valid through a
// call to your service. You would have to have a `checkForValidCreds`
// function defined for this to work.
var validCreds = validateCredentials(username, token);
if (!validCreds) {
return {
errorCode: 'INVALID_CREDENTIALS'
};
}
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperty('dscc.username', username);
userProperties.setProperty('dscc.token', token);
return {
errorCode: 'NONE'
};
}
function validateCredentials(userName,token){
var headers = {
"Authorization" : "Basic " + Utilities.base64Encode(userName + ':' + token)
};
var params = {
"method":"GET",
"headers":headers
};
var response = UrlFetchApp.fetch("https://api.siteimprove.com/v2/", params);
return response;
console.log(response);
}
и файла манифеста
{
"dataStudio": {
"name": "Connector for Siteimprove",
"company": "<company name>",
"logoUrl": "<company logo url>",
"addonUrl": "",
"supportUrl": "",
"description": "This connector can be used to show basic data from Siteimprove"
}
}
Когда я запускаю скрипт, я получаю приглашение для ввода учетных данных, но это приглашение соединиться с учетной записью Google
Но мне нужен способ предоставления учетных данных для сторонней службы.Если я использую свою учетную запись Google, я получаю ответ 401 от Siteimprove API, так что кажется, что он работает как положено.
Есть какие-нибудь подсказки, как я могу получить приглашение предоставить учетные данные для сторонней службы?