Перейти к содержимому


Фотография

Информация о балансе веб-мастера c помощью Google Script

Google Script

  • Пожалуйста, авторизуйтесь, чтобы ответить
3 ответов в этой теме

#1 stelaxi

stelaxi

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Опубликовано 04 Февраль 2015 - 09:02

Подскажите пример кода на Google Script как получить информацию о балансе веб-мастера в гугл таблице.

 

 



#2 stelaxi

stelaxi

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Опубликовано 07 Февраль 2015 - 16:43

Предлагаю переделать вот этот код... Кто поможет? Какие предложения?

var AUTHORIZE_URL = 'https://accounts.google.com/o/oauth2/auth'; //step 1. we can actually start directly here if that is necessary
var TOKEN_URL = 'https://accounts.google.com/o/oauth2/token'; //step 2. after we get the callback, go get token

var CLIENT_ID = ScriptProperties.getProperty('GOOGLE_YTA_OAUTH_CLIENT_ID');
var CLIENT_SECRET = ScriptProperties.getProperty('GOOGLE_YTA_OAUTH_CLIENT_SECRET');

//PUT YOUR URL HERE -
var REDIRECT_URL= 'https://script.google.com/macros/s/AKfycbyFabJD1uUo3NNXAVVlFVapCRnJw7dJKBmCF3X9nzhgPmxZbRM/exec';


var oauthTokenPropertyName = 'GOOGLE_OAUTH_ACCESS_TOKEN'; 
var oauthTokenExpiresPropertyName = 'GOOGLE_OAUTH_ACCESS_TOKEN_EXPIRES'; 
var refreshTokenPropertyName = 'GOOGLE_OAUTH_REFRESH_TOKEN'; 


function getURLForAuthorization(){
  return AUTHORIZE_URL + '?response_type=code&client_id='+CLIENT_ID+'&redirect_uri='+REDIRECT_URL +
    '&scope=https://www.googleapis.com/auth/yt-analytics.readonly&approval_prompt=force&access_type=offline&state=/profile';  
}

function getAndStoreAccessToken(code){
  var parameters = {
    method : 'post',
    payload : 'client_id='+CLIENT_ID+'&client_secret='+CLIENT_SECRET+'&grant_type=authorization_code&redirect_uri='+REDIRECT_URL+'&code=' + code
  };
  
  var response = UrlFetchApp.fetch(TOKEN_URL,parameters).getContentText(); 
  storeOAuthValues_(response);
}

function getUrlFetchOptions() {
  var token = UserProperties.getProperty(oauthTokenPropertyName);
  return {
    "contentType" : "application/json",
    "headers" : {
      "Authorization" : "Bearer " + token,
      "Accept" : "application/json"
    }
  };
}

function attemptTokenRefresh_() {
  var refreshToken = UserProperties.getProperty(refreshTokenPropertyName);
  if (!refreshToken) {
    Logger.log('No refresh token available to refresh with ' + refreshTokenPropertyName);
    return false;
  }
  var requestData = {
    method: 'post',
    payload: {
      client_id: CLIENT_ID,
      client_secret: CLIENT_SECRET,
      refresh_token: refreshToken,
      grant_type: 'refresh_token'
    }
  };
  Logger.log('Attempting token refresh');
  var response = UrlFetchApp.fetch(TOKEN_URL, requestData).getContentText();
  storeOAuthValues_(response);
  return true;
}

function storeOAuthValues_(response){
  var tokenResponse = JSON.parse(response);
  
  var accessToken = tokenResponse.access_token;
  // expires_in is in seconds and Date.now is ms
  var endMs = Date.now() + tokenResponse.expires_in * 1000;
  var refreshToken = tokenResponse.refresh_token;
  
  
  //store the token for later retrival
  UserProperties.setProperty(oauthTokenPropertyName, accessToken);
  if (refreshToken) { //on a refresh call we wont get a new refresh token, lets not wipe prev one out
    UserProperties.setProperty(refreshTokenPropertyName, refreshToken);
  }
  UserProperties.setProperty(oauthTokenExpiresPropertyName, endMs);
}

function isOAuthed() {
  if (hasValidToken_()) {
    Logger.log('Valid oauth token found');
    return true;
  } else {
    try {
      return attemptTokenRefresh_();
    } catch (e) {
      Logger.log('Failed to refresh token with error: ' + e);
      return false;
    }
  }
}

function hasValidToken_() {
  if (!isTokenPresent_()) {
    return false;
  }
  return (!isTokenExpired_());
}

function isTokenExpired_() {
  var expirationTimeMs = UserProperties.getProperty(oauthTokenExpiresPropertyName);
  if (!expirationTimeMs) {
    return true;
  }
  expirationTimeMs = Number(expirationTimeMs);
  var threshold = Date.now() + 30000;
  return (expirationTimeMs < threshold);
}

function isTokenPresent_() {
  var token = UserProperties.getProperty(oauthTokenPropertyName);
  if(!token){ //if its empty or undefined
    return false;
  }
  return true; 
}


#3 stelaxi

stelaxi

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Опубликовано 10 Февраль 2015 - 15:12

Или вот этот код переделаем?

function startInstagram () {
    var redurl = getCallbackURL(getInstagram);
    var consumerKey = '#######';
    var consumerSecret = '#######';
    var parameters = {
        method : 'post',
        payload:   
'grant_type=authorization_code'+'&client_id='+consumerKey+'&client_secret='+consumerSecret+'&grant_type=authorization_code&redirect_uri='+redurl+'&response_type=token'
       };
      var token = UrlFetchApp.fetch('https://api.instagram.com/oauth/authorize/', parameters).getContentText();
      Logger.log(['token', token]);
    }

function getInstagram (vars) {
  var res = {};
  Logger.log(['get', vars]);
  return;
}
function getCallbackURL(callbackFunction) {
   var scriptUrl = 'https://script.google.com/d/<ID>';
   var urlSuffix = '/usercallback?state=';
   var stateToken = ScriptApp.newStateToken()
       .withMethod(callbackFunction)
       .withTimeout(60*10*5)
       .createToken();
  return scriptUrl + urlSuffix + stateToken;
 }

Пока вот до этого ответа дошел

 

 

Не удалось отправить запрос сервису https://api.admitad.com/token/. Код ошибки: 401. Сокращенный ответ сервера: {"error_description": "Client authentication failed.", "error": "invalid_client"}. Чтобы ознакомиться с полным ответом, воспользуйтесь опцией muteHttpExceptions. (строка 16, файл Код)


#4 cpasoft.ru

cpasoft.ru

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 405 сообщений

Опубликовано 11 Февраль 2015 - 02:30

Продолжайте наблюдения....правда интересно




Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей