Изменение типа совместной работы папки пользователя в ящике с помощью Salesforce Toolbox

Я пытаюсь изменить тип совместной работы папки Box для пользователя из триггера Salesforce Apex. Первые мысли были использовать box.Toolkit, но похоже, что у этого класса нет метода updateCollaboration или changeCollaboration, только create. Я думаю, что мой единственный вариант - использовать Rest API Box. Можно ли каким-либо образом получить токен служебной учетной записи в Apex, чтобы использовать его в вызове?


person Alex Mazur    schedule 16.07.2015    source источник
comment
Не могли бы вы предоставить фрагмент кода того, что вы уже пробовали?   -  person Frank Bryce    schedule 16.07.2015


Ответы (1)


Я создал специальный объект «Токены» в Salesforce с двумя полями: токен доступа и токен обновления. Затем у меня есть пакетное задание, которое запускается для обновления маркера доступа каждые 55 минут, чтобы они никогда не истекали.

Вот фрагмент кода в APEX с использованием объекта Tokens.

@future(callout=true)
   public static void updateTokens(){
   //app info for authenticating 
    String clientID = 'MY_CLIENT_ID';
    String clientSecret = 'MY_CLIENT_SECRET';

    //look up value of existing refresh token
    Token__c myToken = [SELECT Name, Value__c FROM Token__c WHERE Name='Refresh'];
    Token__c myAccessToken = [SELECT Name, Value__c FROM Token__c WHERE Name='Access'];
    String refreshToken = myToken.Value__c;
    String accessToken = myAccessToken.Value__c;

    //variables for storing data
    String BoxJSON = '';
    String debugTxt = '';


    //callout to Box API to get new tokens
    HttpRequest reqRefresh = new HttpRequest();
    reqRefresh.setMethod('POST');
    String endpointRefresh = 'https://www.box.com/api/oauth2/token';
    reqRefresh.setEndpoint(endpointRefresh);
    String requestBody = ('grant_type=refresh_token&refresh_token=' + refreshToken + '&client_id=' + clientID + '&client_secret=' + clientSecret);
    reqRefresh.setBody(requestBody);
    System.debug('Body of refresh request: ' + requestBody);

    //Create Http, send request
    Http httpRefresh = new Http();
    Boolean successRefresh = false;
    while (successRefresh == false){
    try{
        HTTPResponse resRefresh = httpRefresh.send(reqRefresh);
        BoxJSON = resRefresh.getBody();
        System.debug('Body of refresh response: ' + BoxJSON);
        successRefresh = true;
    } 
    catch (System.Exception e){
        System.debug('Error refreshing: ' + string.valueof(e));
        if (Test.isRunningTest()){
            successRefresh = true;
        }
    }
}

Имейте в виду, что если вы используете интеграцию Box для Salesforce, ваш администратор может установить параметр для разрешений на папки для синхронизации с разрешениями Salesforce. Это отменит любые изменения, которые вы вносите в сотрудничество. Узнайте больше о разрешениях на интеграцию с Salesforce в Box здесь: https://support.box.com/hc/en-us/articles/202509066-Box-for-Salesforce-Administration#BfS_admin_perm

person Kelsey    schedule 17.07.2015