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