У меня есть функция авторизации в Google Data Studio. Как я могу передать идентификатор и клиента там, чтобы сделать обобщенную функцию c. если я изменяю функцию следующим образом: getOAuthService (id, client) и id и client берутся из request.config Params, тогда другие функции также требуют эти параметры. Однако Google Data Studio не передает параметр запроса в функции isAuthValid, auth Callback и get3PAuthorizationUrls.
Моя функция сейчас:
function getOAuthService() {
return OAuth2.createService('exampleService')
.setAuthorizationBaseUrl('https://oauth.yandex.ru/authorize')
.setTokenUrl('https://oauth.yandex.ru/token')
.setClientId(id)
.setClientSecret(client)
.setPropertyStore(PropertiesService.getUserProperties())
.setCallbackFunction('authCallback');
function getAuthType() {
var cc = DataStudioApp.createCommunityConnector();
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.OAUTH2)
.build();
}
/**
* Resets the auth service.
*/
function resetAuth() {
getOAuthService().reset();
}
/**
* Returns true if the auth service has access.
* @return {boolean} True if the auth service has access.
*/
function isAuthValid() {
return getOAuthService().hasAccess();
}
/**
* The OAuth callback.
* @param {object} request The request data received from the OAuth flow.
* @return {HtmlOutput} The HTML output to show to the user.
*/
function authCallback(request) {
var authorized = getOAuthService().handleCallback(request);
if (authorized) {
return HtmlService.createHtmlOutput('Success! You can close this tab.');
} else {
return HtmlService.createHtmlOutput('Denied. You can close this tab');
};
};
/**
* Gets the 3P authorization URL.
* @return {string} The authorization URL.
* @see https://developers.google.com/apps-script/reference/script/authorization-info
*/
function get3PAuthorizationUrls() {
return getOAuthService().getAuthorizationUrl();
}
function getConfig(request) {
var cc = DataStudioApp.createCommunityConnector();
var config = cc.getConfig();
config.setDateRangeRequired(true);
config.newInfo()
.setId('instructions')
.setText('Add ClientSecret и ClientId.');
config.newTextInput()
.setId('clientId')
.setPlaceholder('clientId');
config.newTextInput()
.setId('clientSecret')
.setPlaceholder('clientSecret');
config.setDateRangeRequired(true);
return config.build();
}
function getSchema(request) {
var fields = getFields(request).build();
return { schema: fields };
}
function getData(request) {
var requestedFieldIds = request.fields.map(function(field) {
return field.name;
});
var requestedFields = getFields().forIds(requestedFieldIds);
var driveService = getOAuthService();
var response = UrlFetchApp.fetch('https://api.webmaster.yandex.net/v4/user', {
headers: {
Authorization: 'OAuth ' + driveService.getAccessToken(),
}
});
}