Как я могу передать идентификатор и клиента для авторизации OAuth 2.0? - PullRequest
1 голос
/ 18 февраля 2020

У меня есть функция авторизации в 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(),
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...