【问题标题】:Changing user folder collaborating type in box using Salesforce Toolbox使用 Salesforce Toolbox 在框中更改用户文件夹协作类型
【发布时间】:2015-07-16 12:01:59
【问题描述】:

我正在尝试从 salesforce Apex 触发器更改用户的 Box 文件夹协作类型。第一个想法是使用 box.Toolkit 但看起来这个类没有 updateCollaboration 或 changeCollaboration 方法,只有创建。我想我唯一的选择是使用 Box 的 Rest API。有什么方法可以在 Apex 中获取服务帐户令牌,以便在标注中使用它?

【问题讨论】:

  • 你能提供一个你已经尝试过的代码sn-p吗?

标签: box boxapiv2


【解决方案1】:

我在 Salesforce 中创建了一个特殊的“令牌”对象,其中包含两个字段:访问令牌和刷新令牌。然后我有一个批处理作业,每 55 分钟更新一次访问令牌,这样它们就永远不会过期。

这是在 APEX 中使用 Tokens 对象的代码 sn-p。

@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 for Salesforce 集成,您的管理员可以设置文件夹权限选项以与 Salesforce 权限同步。这将逆转您对协作所做的任何更改。在此处查看有关 Box 的 Salesforce 集成权限的更多信息:https://support.box.com/hc/en-us/articles/202509066-Box-for-Salesforce-Administration#BfS_admin_perm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2023-02-21
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多